on master help sign in
removed dist
commit30b56a0f8548841ef580486437a750b23cee0342 authorRobert <robert@tlon.io> dateTue 9 Apr 2019, 10:58 (8 years ago) parent97ae6bc
442 files changed−59707
dist/assets/dropdown.svg−1 dist/assets/menu-close.svg−7 dist/assets/menu-open.svg−3 dist/bounty/index.html−1 dist/css/base.css−13066 dist/css/borders.css−15 dist/css/colors.css−22 dist/css/flex.css−3 dist/css/images.css−4 dist/css/inputs.css−10 dist/css/lists.css−12 dist/css/menu.css−50 dist/css/primer.css−3574 dist/css/typography.css−106 dist/css/visibility.css−11 dist/docs.udon−13 dist/docs/getting-started/azimuth/index.html−2 dist/docs/getting-started/booting-a-ship/index.html−10 dist/docs/getting-started/creating-a-development-ship/index.html−9 dist/docs/getting-started/index.html−1 dist/docs/getting-started/installing-urbit/index.html−118 dist/docs/getting-started/operating-a-star/index.html−1 dist/docs/index.html−1 dist/docs/introduction/arvo-vs-azimuth/index.html−1 dist/docs/introduction/community-tutorials/index.html−1 dist/docs/introduction/contributing/index.html−1 dist/docs/introduction/galaxies-stars-and-planets/index.html−8 dist/docs/introduction/index.html−1 dist/docs/introduction/source-code-overview/index.html−1 dist/docs/introduction/technical-overview/index.html−2 dist/docs/learn/arvo/arvo-internals/admin/index.html−24 dist/docs/learn/arvo/arvo-internals/ames/index.html−640 dist/docs/learn/arvo/arvo-internals/behn/index.html−1 dist/docs/learn/arvo/arvo-internals/clay/index.html−761 dist/docs/learn/arvo/arvo-internals/dill/index.html−1 dist/docs/learn/arvo/arvo-internals/eyre/index.html−9 dist/docs/learn/arvo/arvo-internals/filesystem/index.html−40 dist/docs/learn/arvo/arvo-internals/ford/index.html−120 dist/docs/learn/arvo/arvo-internals/gall/index.html−993 dist/docs/learn/arvo/arvo-internals/generators/index.html−119 dist/docs/learn/arvo/arvo-internals/hall/index.html−708 dist/docs/learn/arvo/arvo-internals/index.html−10 dist/docs/learn/arvo/arvo-internals/layout/index.html−15 dist/docs/learn/arvo/arvo-internals/messaging/index.html−72 dist/docs/learn/arvo/arvo-internals/publishing/index.html−47 dist/docs/learn/arvo/arvo-internals/sail/index.html−149 dist/docs/learn/arvo/arvo-internals/shell/index.html−64 dist/docs/learn/arvo/arvo-internals/udon/index.html−237 dist/docs/learn/arvo/hoon/arms-and-cores/index.html−185 dist/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types/index.html−424 dist/docs/learn/arvo/hoon/cores-again/index.html−594 dist/docs/learn/arvo/hoon/cores/index.html−225 dist/docs/learn/arvo/hoon/examples/index.html−250 dist/docs/learn/arvo/hoon/gates/index.html−100 dist/docs/learn/arvo/hoon/getting-started/index.html−30 dist/docs/learn/arvo/hoon/hoon-programs/index.html−52 dist/docs/learn/arvo/hoon/hoon-syntax/index.html−245 dist/docs/learn/arvo/hoon/index.html−1 dist/docs/learn/arvo/hoon/lists/index.html−173 dist/docs/learn/arvo/hoon/multi-gate-cores-and-doors/index.html−229 dist/docs/learn/arvo/hoon/nouns/index.html−221 dist/docs/learn/arvo/hoon/simple-one-gate-programs/index.html−416 dist/docs/learn/arvo/hoon/structures-and-complex-types/index.html−189 dist/docs/learn/arvo/hoon/the-subject-and-its-legs/index.html−299 dist/docs/learn/arvo/hoon/trees-sets-and-maps/index.html−159 dist/docs/learn/arvo/hoon/type-checking-and-type-inference/index.html−316 dist/docs/learn/arvo/hoon/type-polymorphism/index.html−225 dist/docs/learn/arvo/index.html−1 dist/docs/learn/arvo/nock/definition/index.html−48 dist/docs/learn/arvo/nock/example/index.html−71 dist/docs/learn/arvo/nock/explanation/index.html−90 dist/docs/learn/arvo/nock/implementations/index.html−2211 dist/docs/learn/arvo/nock/index.html−1 dist/docs/learn/arvo/style/index.html−114 dist/docs/learn/arvo/vere/api/index.html−200 dist/docs/learn/arvo/vere/c/index.html−33 dist/docs/learn/arvo/vere/index.html−1 dist/docs/learn/arvo/vere/jetting/index.html−155 dist/docs/learn/arvo/vere/nouns/index.html−80 dist/docs/learn/arvo/vere/runtime/index.html−1 dist/docs/learn/arvo/workbook/bomb/index.html−70 dist/docs/learn/arvo/workbook/caesar/index.html−124 dist/docs/learn/arvo/workbook/digits/index.html−31 dist/docs/learn/arvo/workbook/eightball/index.html−61 dist/docs/learn/arvo/workbook/index.html−1 dist/docs/learn/arvo/workbook/list/index.html−27 dist/docs/learn/arvo/workbook/recursion/index.html−38 dist/docs/learn/arvo/workbook/traffic-light/index.html−39 dist/docs/learn/azimuth/blockchain/index.html−1 dist/docs/learn/azimuth/index.html−1 dist/docs/learn/azimuth/wallet/index.html−1 dist/docs/learn/index.html−1 dist/docs/reference/alphabetical-arms/index.html−1 dist/docs/reference/cheat-sheet/index.html−8 dist/docs/reference/glossary/index.html−79 dist/docs/reference/hoon-expressions/advanced/index.html−26 dist/docs/reference/hoon-expressions/basic/index.html−39 dist/docs/reference/hoon-expressions/index.html−1 dist/docs/reference/hoon-expressions/irregular/index.html−17 dist/docs/reference/hoon-expressions/limb/index.html−1 dist/docs/reference/hoon-expressions/limb/limb/index.html−7 dist/docs/reference/hoon-expressions/limb/wing/index.html−8 dist/docs/reference/hoon-expressions/rune/bar/index.html−163 dist/docs/reference/hoon-expressions/rune/bus/index.html−100 dist/docs/reference/hoon-expressions/rune/cen/index.html−144 dist/docs/reference/hoon-expressions/rune/col/index.html−82 dist/docs/reference/hoon-expressions/rune/constants/index.html−78 dist/docs/reference/hoon-expressions/rune/dot/index.html−82 dist/docs/reference/hoon-expressions/rune/index.html−1 dist/docs/reference/hoon-expressions/rune/ket/index.html−121 dist/docs/reference/hoon-expressions/rune/lus/index.html−62 dist/docs/reference/hoon-expressions/rune/mic/index.html−118 dist/docs/reference/hoon-expressions/rune/sig/index.html−98 dist/docs/reference/hoon-expressions/rune/terminators/index.html−41 dist/docs/reference/hoon-expressions/rune/tis/index.html−132 dist/docs/reference/hoon-expressions/rune/wut/index.html−171 dist/docs/reference/hoon-expressions/rune/zap/index.html−54 dist/docs/reference/index.html−1 dist/docs/reference/library/1a/index.html−322 dist/docs/reference/library/1b/index.html−144 dist/docs/reference/library/1c/index.html−140 dist/docs/reference/library/2a/index.html−128 dist/docs/reference/library/2b/index.html−395 dist/docs/reference/library/2c/index.html−603 dist/docs/reference/library/2d/index.html−170 dist/docs/reference/library/2e/index.html−156 dist/docs/reference/library/2f/index.html−214 dist/docs/reference/library/2g/index.html−51 dist/docs/reference/library/2h/index.html−325 dist/docs/reference/library/2i/index.html−401 dist/docs/reference/library/2j/index.html−109 dist/docs/reference/library/2k/index.html−137 dist/docs/reference/library/2l/index.html−27 dist/docs/reference/library/2m/index.html−72 dist/docs/reference/library/2n/index.html−125 dist/docs/reference/library/2o/index.html−76 dist/docs/reference/library/2p/index.html−121 dist/docs/reference/library/2q/index.html−147 dist/docs/reference/library/3a/index.html−258 dist/docs/reference/library/3b/index.html−1432 dist/docs/reference/library/3c/index.html−214 dist/docs/reference/library/3d/index.html−410 dist/docs/reference/library/3e/index.html−1 dist/docs/reference/library/3f/index.html−287 dist/docs/reference/library/3g/index.html−133 dist/docs/reference/library/4a/index.html−98 dist/docs/reference/library/4b/index.html−422 dist/docs/reference/library/4c/index.html−181 dist/docs/reference/library/4d/index.html−38 dist/docs/reference/library/4e/index.html−169 dist/docs/reference/library/4f/index.html−494 dist/docs/reference/library/4g/index.html−59 dist/docs/reference/library/4h/index.html−358 dist/docs/reference/library/4i/index.html−391 dist/docs/reference/library/4j/index.html−356 dist/docs/reference/library/4k/index.html−174 dist/docs/reference/library/4l/index.html−364 dist/docs/reference/library/4m/index.html−162 dist/docs/reference/library/4n/index.html−236 dist/docs/reference/library/4o/index.html−243 dist/docs/reference/library/5a/index.html−1 dist/docs/reference/library/5b/index.html−1 dist/docs/reference/library/5c/index.html−1 dist/docs/reference/library/5d/index.html−1 dist/docs/reference/library/5e/index.html−1 dist/docs/reference/library/5f/index.html−19 dist/docs/reference/library/5g/index.html−1 dist/docs/reference/library/index.html−1 dist/docs/reference/library/zuse/index.html−1 dist/docs/reference/troubleshooting/index.html−23 dist/favicon.ico dist/images/aegean-1.png dist/images/aegean-2.png dist/images/aegean-3.png dist/images/aegean.svg−1 dist/images/arvo-complete.svg−1 dist/images/arvo-large.svg−84 dist/images/azimuth.svg−1 dist/images/blockchain-fade.svg−1 dist/images/business.svg−1 dist/images/face.svg−23 dist/images/faces.svg−88 dist/images/file.svg−1 dist/images/galaxies-old.svg−19 dist/images/galaxies.svg−1 dist/images/iot.svg−62 dist/images/megacorp.svg−1 dist/images/moons.svg−73 dist/images/network-diagram.gif dist/images/network-diagram.svg dist/images/new-blockchain.svg−1 dist/images/new-independence.svg−1 dist/images/offchain.svg−1 dist/images/passcode.svg−1 dist/images/personal-blockchain 2.svg−129 dist/images/personal-blockchain.svg−1 dist/images/planets-old.svg−43 dist/images/planets.svg−1 dist/images/program.svg−1 dist/images/server.svg−1 dist/images/single-interface-green.svg−109 dist/images/single-interface.svg−111 dist/images/standard-code.svg−1 dist/images/stars-old.svg−8 dist/images/stars.svg−1 dist/images/sticker-1.svg−6 dist/images/sticker-2.svg−11 dist/images/technical-problem.svg−1 dist/images/their-code.svg−1 dist/images/urbit-complete.svg−1 dist/images/what-urbit-is.svg−1 dist/index.html−1 dist/index/index.html−1 dist/introduction/index.html−1 dist/js/main.js−13 dist/js/main/index.html−14 dist/js/primer.js−47 dist/js/primer/index.html−48 dist/posts/essays/a-founders-farewell/index.html−1 dist/posts/essays/an-urbit-overview/index.html−1 dist/posts/essays/azimuth-is-on-chain/index.html−1 dist/posts/essays/beliefs-and-principles/index.html−1 dist/posts/essays/common-objections-to-urbit/index.html−1 dist/posts/essays/governance-of-urbit/index.html−1 dist/posts/essays/index.html−1 dist/posts/essays/interim-constitution/index.html−1 dist/posts/essays/magic/index.html−1 dist/posts/essays/the-dao-as-a-lesson-in-decentralized-governance/index.html−1 dist/posts/essays/the-urbit-address-space/index.html−6 dist/posts/essays/toward-a-frozen-operating-system/index.html−1 dist/posts/essays/toward-a-new-clay/index.html−23 dist/posts/essays/urbit-and-the-blockchain/index.html−1 dist/posts/essays/what-is-urbit-for/index.html−1 dist/posts/essays/why-urbit-probably-does-not-need-a-blockchain/index.html−1 dist/posts/index.html−1 dist/posts/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit/index.html−1 dist/posts/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web/index.html−1 dist/posts/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet/index.html−1 dist/posts/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet/index.html−1 dist/posts/media/index.html−1 dist/posts/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack/index.html−1 dist/posts/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system/index.html−1 dist/posts/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit/index.html−1 dist/posts/media/the-future-of-precision-agriculture-is-decentralized/index.html−1 dist/posts/media/urbit-and-the-not-so-dark-future-of-the-internet/index.html−1 dist/posts/updates/2016.10.6-update/index.html−1 dist/posts/updates/2016.5.16-roadmap/index.html−1 dist/posts/updates/2016.7.20-update/index.html−1 dist/posts/updates/2016.8.30-update/index.html−1 dist/posts/updates/2017.1.30-update/index.html−1 dist/posts/updates/2017.10.7-update/index.html−1 dist/posts/updates/2017.11.14-update/index.html−1 dist/posts/updates/2017.12.16-update/index.html−1 dist/posts/updates/2017.12.2-update/index.html−1 dist/posts/updates/2017.12.22-update/index.html−1 dist/posts/updates/2017.3.1-update/index.html−1 dist/posts/updates/2017.4.17-update/index.html−1 dist/posts/updates/2017.5.11-roadmap/index.html−1 dist/posts/updates/2017.8.11-update/index.html−1 dist/posts/updates/2017.9.20-bootstrapping-urbit-from-ethereum/index.html−1 dist/posts/updates/2017.9.23-update/index.html−1 dist/posts/updates/2017.9.29-update/index.html−1 dist/posts/updates/2018.1.13-update/index.html−1 dist/posts/updates/2018.1.6-update/index.html−1 dist/posts/updates/2018.10.12-update/index.html−1 dist/posts/updates/2018.10.24-update/index.html−1 dist/posts/updates/2018.11.20-update/index.html−1 dist/posts/updates/2018.11.6-update/index.html−1 dist/posts/updates/2018.12.18-update/index.html−1 dist/posts/updates/2018.2.17-update/index.html−1 dist/posts/updates/2018.2.24-update/index.html−1 dist/posts/updates/2018.2.5-update/index.html−1 dist/posts/updates/2018.2.9-update/index.html−1 dist/posts/updates/2018.3.24-update/index.html−1 dist/posts/updates/2018.3.5-update/index.html−1 dist/posts/updates/2018.4.14-update/index.html−1 dist/posts/updates/2018.4.7-update/index.html−1 dist/posts/updates/2018.5.16-update/index.html−1 dist/posts/updates/2018.5.23-update/index.html−1 dist/posts/updates/2018.5.29-update/index.html−1 dist/posts/updates/2018.5.30-update/index.html−1 dist/posts/updates/2018.6.14-update/index.html−1 dist/posts/updates/2018.6.21-update/index.html−1 dist/posts/updates/2018.6.6-update/index.html−1 dist/posts/updates/2018.7.13-update/index.html−1 dist/posts/updates/2018.7.20-update/index.html−1 dist/posts/updates/2018.7.3-update/index.html−1 dist/posts/updates/2018.7.30-update/index.html−1 dist/posts/updates/2018.8.23-update/index.html−1 dist/posts/updates/2018.8.30-update/index.html−1 dist/posts/updates/2018.8.8-update/index.html−1 dist/posts/updates/2018.9.11-update/index.html−1 dist/posts/updates/2019.2.11-update/index.html−1 dist/posts/updates/2019.2.26-network-update/index.html−1 dist/posts/updates/2019.2.4-update/index.html−1 dist/posts/updates/index.html−1 dist/primer/index.html−1 dist/privacy/index.html−1 dist/tos/index.html−1 dist/web/assets/dropdown.svg−1 dist/web/assets/menu-close.svg−7 dist/web/assets/menu-open.svg−3 dist/web/bounty/index.html−1 dist/web/css/base.css−13066 dist/web/css/borders.css−15 dist/web/css/colors.css−22 dist/web/css/flex.css−3 dist/web/css/images.css−4 dist/web/css/inputs.css−10 dist/web/css/lists.css−12 dist/web/css/menu.css−50 dist/web/css/primer.css−3574 dist/web/css/typography.css−106 dist/web/css/visibility.css−11 dist/web/docs.udon−13 dist/web/favicon.ico dist/web/images/aegean-1.png dist/web/images/aegean-2.png dist/web/images/aegean-3.png dist/web/images/aegean.svg−1 dist/web/images/arvo-complete.svg−1 dist/web/images/arvo-large.svg−84 dist/web/images/azimuth.svg−1 dist/web/images/blockchain-fade.svg−1 dist/web/images/business.svg−1 dist/web/images/face.svg−23 dist/web/images/faces.svg−88 dist/web/images/file.svg−1 dist/web/images/galaxies-old.svg−19 dist/web/images/galaxies.svg−1 dist/web/images/iot.svg−62 dist/web/images/megacorp.svg−1 dist/web/images/moons.svg−73 dist/web/images/network-diagram.gif dist/web/images/network-diagram.svg dist/web/images/new-blockchain.svg−1 dist/web/images/new-independence.svg−1 dist/web/images/offchain.svg−1 dist/web/images/passcode.svg−1 dist/web/images/personal-blockchain 2.svg−129 dist/web/images/personal-blockchain.svg−1 dist/web/images/planets-old.svg−43 dist/web/images/planets.svg−1 dist/web/images/program.svg−1 dist/web/images/server.svg−1 dist/web/images/single-interface-green.svg−109 dist/web/images/single-interface.svg−111 dist/web/images/standard-code.svg−1 dist/web/images/stars-old.svg−8 dist/web/images/stars.svg−1 dist/web/images/sticker-1.svg−6 dist/web/images/sticker-2.svg−11 dist/web/images/technical-problem.svg−1 dist/web/images/their-code.svg−1 dist/web/images/urbit-complete.svg−1 dist/web/images/what-urbit-is.svg−1 dist/web/index.html−1 dist/web/index/index.html−1 dist/web/introduction/index.html−1 dist/web/js/main/index.html−14 dist/web/js/primer/index.html−48 dist/web/posts/essays/a-founders-farewell/index.html−1 dist/web/posts/essays/an-urbit-overview/index.html−1 dist/web/posts/essays/azimuth-is-on-chain/index.html−1 dist/web/posts/essays/beliefs-and-principles/index.html−1 dist/web/posts/essays/common-objections-to-urbit/index.html−1 dist/web/posts/essays/governance-of-urbit/index.html−1 dist/web/posts/essays/index.html−1 dist/web/posts/essays/interim-constitution/index.html−1 dist/web/posts/essays/magic/index.html−1 dist/web/posts/essays/the-dao-as-a-lesson-in-decentralized-governance/index.html−1 dist/web/posts/essays/the-urbit-address-space/index.html−6 dist/web/posts/essays/toward-a-frozen-operating-system/index.html−1 dist/web/posts/essays/toward-a-new-clay/index.html−23 dist/web/posts/essays/urbit-and-the-blockchain/index.html−1 dist/web/posts/essays/what-is-urbit-for/index.html−1 dist/web/posts/essays/why-urbit-probably-does-not-need-a-blockchain/index.html−1 dist/web/posts/index.html−1 dist/web/posts/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit/index.html−1 dist/web/posts/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web/index.html−1 dist/web/posts/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet/index.html−1 dist/web/posts/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet/index.html−1 dist/web/posts/media/index.html−1 dist/web/posts/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack/index.html−1 dist/web/posts/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system/index.html−1 dist/web/posts/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit/index.html−1 dist/web/posts/media/the-future-of-precision-agriculture-is-decentralized/index.html−1 dist/web/posts/media/urbit-and-the-not-so-dark-future-of-the-internet/index.html−1 dist/web/posts/updates/2016.10.6-update/index.html−1 dist/web/posts/updates/2016.5.16-roadmap/index.html−1 dist/web/posts/updates/2016.7.20-update/index.html−1 dist/web/posts/updates/2016.8.30-update/index.html−1 dist/web/posts/updates/2017.1.30-update/index.html−1 dist/web/posts/updates/2017.10.7-update/index.html−1 dist/web/posts/updates/2017.11.14-update/index.html−1 dist/web/posts/updates/2017.12.16-update/index.html−1 dist/web/posts/updates/2017.12.2-update/index.html−1 dist/web/posts/updates/2017.12.22-update/index.html−1 dist/web/posts/updates/2017.3.1-update/index.html−1 dist/web/posts/updates/2017.4.17-update/index.html−1 dist/web/posts/updates/2017.5.11-roadmap/index.html−1 dist/web/posts/updates/2017.8.11-update/index.html−1 dist/web/posts/updates/2017.9.20-bootstrapping-urbit-from-ethereum/index.html−1 dist/web/posts/updates/2017.9.23-update/index.html−1 dist/web/posts/updates/2017.9.29-update/index.html−1 dist/web/posts/updates/2018.1.13-update/index.html−1 dist/web/posts/updates/2018.1.6-update/index.html−1 dist/web/posts/updates/2018.10.12-update/index.html−1 dist/web/posts/updates/2018.10.24-update/index.html−1 dist/web/posts/updates/2018.11.20-update/index.html−1 dist/web/posts/updates/2018.11.6-update/index.html−1 dist/web/posts/updates/2018.12.18-update/index.html−1 dist/web/posts/updates/2018.2.17-update/index.html−1 dist/web/posts/updates/2018.2.24-update/index.html−1 dist/web/posts/updates/2018.2.5-update/index.html−1 dist/web/posts/updates/2018.2.9-update/index.html−1 dist/web/posts/updates/2018.3.24-update/index.html−1 dist/web/posts/updates/2018.3.5-update/index.html−1 dist/web/posts/updates/2018.4.14-update/index.html−1 dist/web/posts/updates/2018.4.7-update/index.html−1 dist/web/posts/updates/2018.5.16-update/index.html−1 dist/web/posts/updates/2018.5.23-update/index.html−1 dist/web/posts/updates/2018.5.29-update/index.html−1 dist/web/posts/updates/2018.5.30-update/index.html−1 dist/web/posts/updates/2018.6.14-update/index.html−1 dist/web/posts/updates/2018.6.21-update/index.html−1 dist/web/posts/updates/2018.6.6-update/index.html−1 dist/web/posts/updates/2018.7.13-update/index.html−1 dist/web/posts/updates/2018.7.20-update/index.html−1 dist/web/posts/updates/2018.7.3-update/index.html−1 dist/web/posts/updates/2018.7.30-update/index.html−1 dist/web/posts/updates/2018.8.23-update/index.html−1 dist/web/posts/updates/2018.8.30-update/index.html−1 dist/web/posts/updates/2018.8.8-update/index.html−1 dist/web/posts/updates/2018.9.11-update/index.html−1 dist/web/posts/updates/2019.2.11-update/index.html−1 dist/web/posts/updates/2019.2.26-network-update/index.html−1 dist/web/posts/updates/2019.2.4-update/index.html−1 dist/web/posts/updates/index.html−1 dist/web/primer/index.html−1 dist/web/privacy/index.html−1 dist/web/tos/index.html−1
dist/assets/dropdown.svgdeleted−1
@@ -1 +0,0 @@
1−<svg fill="none" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m8.04705 10.7614 4.71405-4.71404h-9.42809z" fill="#000"/></svg>
dist/assets/menu-close.svgdeleted−7
@@ -1,7 +0,0 @@
1−<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">
2−<title>X</title>
3−<g fill="none" fill-rule="evenodd">
4−<rect width="16" height="16" fill="#000"/>
5−<path d="m9.3891 7.9749l3.5104 3.5104-1.4142 1.4142-3.5104-3.5104-3.5104 3.5104-1.4142-1.4142 3.5104-3.5104-3.5607-3.5607 1.4142-1.4142 3.5607 3.5607 3.5607-3.5607 1.4142 1.4142-3.5607 3.5607z" fill="#fff"/>
6−</g>
7−</svg>
dist/assets/menu-open.svgdeleted−3
@@ -1,3 +0,0 @@
1−<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2−<path fill-rule="evenodd" clip-rule="evenodd" d="M14 4H2V6H14V4ZM14 10H2V12H14V10Z" fill="black"/>
3−</svg>
dist/bounty/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Posts</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div class="container mt-10"><div class="row fixed"><div class="col-sm-12 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-8 col-md-12 ml-1 mt-3 sm-2"><ul class="list-reset h-font"><a href="/posts"><li>All</li></a><a href="/posts/updates"><li>Updates</li></a><a href="/posts/essays"><li>Essays</li></a><a href="/posts/media"><li>Media</li></a></ul></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-3 col-md-offset-2"><div class="post col-sm-12"><div><h1 id="upcoming-bug-bounty-program-">Upcoming Bug Bounty Program </h1><p>We are in the process of designing our Bug Bounty Program, and it should be live in several days. In the meantime, if you believe you have discovered a bug or vulnerability in our code, please report it at security@tlon.io. </p><p>We&#39;ll review the issue, and a member of our dev team will get back to you ASAP. If your bug has merit, we&#39;ll work with you to fix it, and award a bounty based on the severity of the bug. We determine severity using the <a href="https://www.first.org/cvss/calculator/3.0">CVSS</a> model. </p><p>Once the fix is complete, we&#39;ll publish a full retrospective in the interests of transparency. If the bug leaks prior to the retrospective being published, the bounty is void. </p><p>We look forward to working with you. </p></div></div></div></div></div><footer class="container mb-36"><div class="row"><div class="col-sm-8 col-sm-offset-3 col-lg-4 col-md-offset-2"><div id="mc_embed_signup"><h2 class="mb-2">Updates</h2><p>Every month we send an email with community events and what we&#39;re up to. </p><iframe name="nothing" style="display:none;"></iframe><form id="mc-embedded-subscribe-form" class="validate" action="https://urbit.us11.list-manage.com/subscribe/post?u=972a03db9e0c6c25bb58de8c8&amp;amp;id=be143888d2" method="post" name="mc-embedded-subscribe-form" target="nothing"><div class="input-group text-mono" id="mc_embed_signup_scroll"><div class="mc-field-group"><input class="required mb-2" type="email" name="EMAIL" id="mce-EMAIL" placeholder="your@email.com"></input></div><div id="mce-responses" class="clear"><div id="mce-error-response" class="response" style="display:none"></div><div id="mce-success-response" class="response" style="display:none"></div></div><div style="position: absolute; left: -5000px;"><input type="text" name="b_972a03db9e0c6c25bb58de8c8_be143888d2"></input></div><div class="clear"><button id="mc-embedded-subscribe" class="bg-black white h-font" type="submit" name="subscribe"><span class="text-500">Subscribe</span></button></div></div></form></div></div></div><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/css/base.cssdeleted−13066
@@ -1,13066 +0,0 @@
1−@charset "UTF-8";
2−/**********************
3−Color variables
4−**********************/
5−/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
6−/**
7− * 1. Set default font family to sans-serif.
8− * 2. Prevent iOS text size adjust after orientation change, without disabling
9− * user zoom.
10− */
11−html {
12− font-family: sans-serif;
13− /* 1 */
14− -ms-text-size-adjust: 100%;
15− /* 2 */
16− -webkit-text-size-adjust: 100%;
17− /* 2 */ }
18−
19−/**
20− * Remove default margin.
21− */
22−body {
23− margin: 0; }
24−
25−/* HTML5 display definitions
26− ========================================================================== */
27−/**
28− * Correct `block` display not defined for any HTML5 element in IE 8/9.
29− * Correct `block` display not defined for `details` or `summary` in IE 10/11
30− * and Firefox.
31− * Correct `block` display not defined for `main` in IE 11.
32− */
33−article,
34−aside,
35−details,
36−figcaption,
37−figure,
38−footer,
39−header,
40−hgroup,
41−main,
42−menu,
43−nav,
44−section,
45−summary {
46− display: block; }
47−
48−/**
49− * 1. Correct `inline-block` display not defined in IE 8/9.
50− * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
51− */
52−audio,
53−canvas,
54−progress,
55−video {
56− display: inline-block;
57− /* 1 */
58− vertical-align: baseline;
59− /* 2 */ }
60−
61−/**
62− * Prevent modern browsers from displaying `audio` without controls.
63− * Remove excess height in iOS 5 devices.
64− */
65−audio:not([controls]) {
66− display: none;
67− height: 0; }
68−
69−/**
70− * Address `[hidden]` styling not present in IE 8/9/10.
71− * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
72− */
73−[hidden],
74−template {
75− display: none; }
76−
77−/* Links
78− ========================================================================== */
79−/**
80− * Remove the gray background color from active links in IE 10.
81− */
82−a {
83− background-color: transparent; }
84−
85−/**
86− * Improve readability when focused and also mouse hovered in all browsers.
87− */
88−a:active,
89−a:hover {
90− outline: 0; }
91−
92−/* Text-level semantics
93− ========================================================================== */
94−/**
95− * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
96− */
97−abbr[title] {
98− border-bottom: 1px dotted; }
99−
100−/**
101− * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
102− */
103−b,
104−strong {
105− font-weight: bold; }
106−
107−/**
108− * Address styling not present in Safari and Chrome.
109− */
110−dfn {
111− font-style: italic; }
112−
113−/**
114− * Address variable `h1` font-size and margin within `section` and `article`
115− * contexts in Firefox 4+, Safari, and Chrome.
116− */
117−h1 {
118− font-size: 2em;
119− margin: 0.67em 0; }
120−
121−/**
122− * Address styling not present in IE 8/9.
123− */
124−mark {
125− background: #ff0;
126− color: #000000; }
127−
128−/**
129− * Address inconsistent and variable font size in all browsers.
130− */
131−small {
132− font-size: 80%; }
133−
134−/**
135− * Prevent `sub` and `sup` affecting `line-height` in all browsers.
136− */
137−sub,
138−sup {
139− font-size: 75%;
140− line-height: 0;
141− position: relative;
142− vertical-align: baseline; }
143−
144−sup {
145− top: -0.5em; }
146−
147−sub {
148− bottom: -0.25em; }
149−
150−/* Embedded content
151− ========================================================================== */
152−/**
153− * Remove border when inside `a` element in IE 8/9/10.
154− */
155−img {
156− border: 0; }
157−
158−/**
159− * Correct overflow not hidden in IE 9/10/11.
160− */
161−svg:not(:root) {
162− overflow: hidden; }
163−
164−/* Grouping content
165− ========================================================================== */
166−/**
167− * Address margin not present in IE 8/9 and Safari.
168− */
169−figure {
170− margin: 1em 40px; }
171−
172−/**
173− * Address differences between Firefox and other browsers.
174− */
175−hr {
176− -moz-box-sizing: content-box;
177− box-sizing: content-box;
178− height: 0; }
179−
180−/**
181− * Contain overflow in all browsers.
182− */
183−pre {
184− overflow: auto; }
185−
186−/**
187− * Address odd `em`-unit font size rendering in all browsers.
188− */
189−code,
190−kbd,
191−pre,
192−samp {
193− font-family: monospace, monospace;
194− font-size: 1em; }
195−
196−/* Forms
197− ========================================================================== */
198−/**
199− * Known limitation: by default, Chrome and Safari on OS X allow very limited
200− * styling of `select`, unless a `border` property is set.
201− */
202−/**
203− * 1. Correct color not being inherited.
204− * Known issue: affects color of disabled elements.
205− * 2. Correct font properties not being inherited.
206− * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
207− */
208−button,
209−input,
210−optgroup,
211−select,
212−textarea {
213− color: inherit;
214− /* 1 */
215− font: inherit;
216− /* 2 */
217− margin: 0;
218− /* 3 */ }
219−
220−/**
221− * Address `overflow` set to `hidden` in IE 8/9/10/11.
222− */
223−button {
224− overflow: visible; }
225−
226−/**
227− * Address inconsistent `text-transform` inheritance for `button` and `select`.
228− * All other form control elements do not inherit `text-transform` values.
229− * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
230− * Correct `select` style inheritance in Firefox.
231− */
232−button,
233−select {
234− text-transform: none; }
235−
236−/**
237− * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
238− * and `video` controls.
239− * 2. Correct inability to style clickable `input` types in iOS.
240− * 3. Improve usability and consistency of cursor style between image-type
241− * `input` and others.
242− */
243−button,
244−html input[type="button"],
245−input[type="reset"],
246−input[type="submit"] {
247− -webkit-appearance: button;
248− /* 2 */
249− cursor: pointer;
250− /* 3 */ }
251−
252−/**
253− * Re-set default cursor for disabled elements.
254− */
255−button[disabled],
256−html input[disabled] {
257− cursor: default; }
258−
259−/**
260− * Remove inner padding and border in Firefox 4+.
261− */
262−button::-moz-focus-inner,
263−input::-moz-focus-inner {
264− border: 0;
265− padding: 0; }
266−
267−/**
268− * Address Firefox 4+ setting `line-height` on `input` using `!important` in
269− * the UA stylesheet.
270− */
271−input {
272− line-height: normal; }
273−
274−/**
275− * It's recommended that you don't attempt to style these elements.
276− * Firefox's implementation doesn't respect box-sizing, padding, or width.
277− *
278− * 1. Address box sizing set to `content-box` in IE 8/9/10.
279− * 2. Remove excess padding in IE 8/9/10.
280− */
281−input[type="checkbox"],
282−input[type="radio"] {
283− box-sizing: border-box;
284− /* 1 */
285− padding: 0;
286− /* 2 */ }
287−
288−/**
289− * Fix the cursor style for Chrome's increment/decrement buttons. For certain
290− * `font-size` values of the `input`, it causes the cursor style of the
291− * decrement button to change from `default` to `text`.
292− */
293−input[type="number"]::-webkit-inner-spin-button,
294−input[type="number"]::-webkit-outer-spin-button {
295− height: auto; }
296−
297−/**
298− * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
299− * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
300− * (include `-moz` to future-proof).
301− */
302−input[type="search"] {
303− -webkit-appearance: textfield;
304− /* 1 */
305− -moz-box-sizing: content-box;
306− -webkit-box-sizing: content-box;
307− /* 2 */
308− box-sizing: content-box; }
309−
310−/**
311− * Remove inner padding and search cancel button in Safari and Chrome on OS X.
312− * Safari (but not Chrome) clips the cancel button when the search input has
313− * padding (and `textfield` appearance).
314− */
315−input[type="search"]::-webkit-search-cancel-button,
316−input[type="search"]::-webkit-search-decoration {
317− -webkit-appearance: none; }
318−
319−/**
320− * Define consistent border, margin, and padding.
321− */
322−fieldset {
323− border: 1px solid #c0c0c0;
324− margin: 0 2px;
325− padding: 0.35em 0.625em 0.75em; }
326−
327−/**
328− * 1. Correct `color` not being inherited in IE 8/9/10/11.
329− * 2. Remove padding so people aren't caught out if they zero out fieldsets.
330− */
331−legend {
332− border: 0;
333− /* 1 */
334− padding: 0;
335− /* 2 */ }
336−
337−/**
338− * Remove default vertical scrollbar in IE 8/9/10/11.
339− */
340−textarea {
341− overflow: auto; }
342−
343−/**
344− * Don't inherit the `font-weight` (applied by a rule above).
345− * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
346− */
347−optgroup {
348− font-weight: bold; }
349−
350−/* Tables
351− ========================================================================== */
352−/**
353− * Remove most spacing between table cells.
354− */
355−table {
356− border-collapse: collapse;
357− border-spacing: 0; }
358−
359−td,
360−th {
361− padding: 0; }
362−
363−/*
364− Fluid-to-fixed conversions at standard screen sizes:
365−
366− iPhone (portrait) 320px:
367− - columns: 18px * 12 = 216px // width: 3
368− - gutter: 6px * 11 = 66px
369− - outer padding: 18px * 2 = 36px
370− = 318px
371−
372− iPad (portrait) 768px:
373− - columns: 54px * 12 = 648px // width: 9
374− - gutter: 6px * 11 = 66px
375− - outer padding: 24px * 2 = 48px
376− = 762px
377−
378− regular 960px:
379− - columns: 72px * 12 = 864px // width: 12
380− - gutter: 6px * 11 = 66px
381− - outer padding: 18px * 2 = 36px
382− = 966px
383−*/
384−*[class*="col-"] {
385− width: 100%;
386− margin-bottom: 1rem; }
387−
388−.container {
389− margin: 0 auto;
390− padding: 0 2rem;
391− max-width: 960px; }
392−
393−.row {
394− display: flex;
395− flex-wrap: wrap;
396− margin-right: -0.5rem;
397− margin-left: -0.5rem; }
398−
399−@media only screen and (min-width: 0) {
400− .col-sm,
401− .col-sm-1,
402− .col-sm-2,
403− .col-sm-3,
404− .col-sm-4,
405− .col-sm-5,
406− .col-sm-6,
407− .col-sm-7,
408− .col-sm-8,
409− .col-sm-9,
410− .col-sm-10,
411− .col-sm-11,
412− .col-sm-12,
413− .col-sm-offset-0,
414− .col-sm-offset-1,
415− .col-sm-offset-2,
416− .col-sm-offset-3,
417− .col-sm-offset-4,
418− .col-sm-offset-5,
419− .col-sm-offset-6,
420− .col-sm-offset-7,
421− .col-sm-offset-8,
422− .col-sm-offset-9,
423− .col-sm-offset-10,
424− .col-sm-offset-11,
425− .col-sm-offset-12 {
426− box-sizing: border-box;
427− flex: 0 0 auto;
428− padding-right: 0.5rem;
429− padding-left: 0.5rem; }
430− .col-sm {
431− flex-grow: 1;
432− flex-basis: 0;
433− max-width: 100%; }
434− .sm-wrap-reverse {
435− flex-wrap: wrap-reverse; }
436− .col-sm-1 {
437− flex-basis: 8.33333333%;
438− max-width: 8.33333333%; }
439− .col-sm-2 {
440− flex-basis: 16.66666667%;
441− max-width: 16.66666667%; }
442− .col-sm-3 {
443− flex-basis: 25%;
444− max-width: 25%; }
445− .col-sm-4 {
446− flex-basis: 33.33333333%;
447− max-width: 33.33333333%; }
448− .col-sm-5 {
449− flex-basis: 41.66666667%;
450− max-width: 41.66666667%; }
451− .col-sm-6 {
452− flex-basis: 50%;
453− max-width: 50%; }
454− .col-sm-7 {
455− flex-basis: 58.33333333%;
456− max-width: 58.33333333%; }
457− .col-sm-8 {
458− flex-basis: 66.66666667%;
459− max-width: 66.66666667%; }
460− .col-sm-9 {
461− flex-basis: 75%;
462− max-width: 75%; }
463− .col-sm-10 {
464− flex-basis: 83.33333333%;
465− max-width: 83.33333333%; }
466− .col-sm-11 {
467− flex-basis: 91.66666667%;
468− max-width: 91.66666667%; }
469− .col-sm-12 {
470− flex-basis: 100%;
471− max-width: 100%; }
472− .col-sm-offset-0 {
473− margin-left: 0; }
474− .col-sm-offset-1 {
475− margin-left: 8.33333333%; }
476− .col-sm-offset-2 {
477− margin-left: 16.66666667%; }
478− .col-sm-offset-3 {
479− margin-left: 25%; }
480− .col-sm-offset-4 {
481− margin-left: 33.33333333%; }
482− .col-sm-offset-5 {
483− margin-left: 41.66666667%; }
484− .col-sm-offset-6 {
485− margin-left: 50%; }
486− .col-sm-offset-7 {
487− margin-left: 58.33333333%; }
488− .col-sm-offset-8 {
489− margin-left: 66.66666667%; }
490− .col-sm-offset-9 {
491− margin-left: 75%; }
492− .col-sm-offset-10 {
493− margin-left: 83.33333333%; }
494− .col-sm-offset-11 {
495− margin-left: 91.66666667%; } }
496−
497−@media only screen and (min-width: 480px) {
498− .col-md,
499− .col-md-1,
500− .col-md-2,
501− .col-md-3,
502− .col-md-4,
503− .col-md-5,
504− .col-md-6,
505− .col-md-7,
506− .col-md-8,
507− .col-md-9,
508− .col-md-10,
509− .col-md-11,
510− .col-md-12,
511− .col-md-offset-0,
512− .col-md-offset-1,
513− .col-md-offset-2,
514− .col-md-offset-3,
515− .col-md-offset-4,
516− .col-md-offset-5,
517− .col-md-offset-6,
518− .col-md-offset-7,
519− .col-md-offset-8,
520− .col-md-offset-9,
521− .col-md-offset-10,
522− .col-md-offset-11,
523− .col-md-offset-12 {
524− box-sizing: border-box;
525− flex: 0 0 auto;
526− padding-right: 0.5rem;
527− padding-left: 0.5rem; }
528− .col-md {
529− flex-grow: 1;
530− flex-basis: 0;
531− max-width: 100%; }
532− .col-md-1 {
533− flex-basis: 8.33333333%;
534− max-width: 8.33333333%; }
535− .col-md-2 {
536− flex-basis: 16.66666667%;
537− max-width: 16.66666667%; }
538− .col-md-3 {
539− flex-basis: 25%;
540− max-width: 25%; }
541− .col-md-4 {
542− flex-basis: 33.33333333%;
543− max-width: 33.33333333%; }
544− .col-md-5 {
545− flex-basis: 41.66666667%;
546− max-width: 41.66666667%; }
547− .col-md-6 {
548− flex-basis: 50%;
549− max-width: 50%; }
550− .col-md-7 {
551− flex-basis: 58.33333333%;
552− max-width: 58.33333333%; }
553− .col-md-8 {
554− flex-basis: 66.66666667%;
555− max-width: 66.66666667%; }
556− .col-md-9 {
557− flex-basis: 75%;
558− max-width: 75%; }
559− .col-md-10 {
560− flex-basis: 83.33333333%;
561− max-width: 83.33333333%; }
562− .col-md-11 {
563− flex-basis: 91.66666667%;
564− max-width: 91.66666667%; }
565− .col-md-12 {
566− flex-basis: 100%;
567− max-width: 100%; }
568− .col-md-offset-0 {
569− margin-left: 0; }
570− .col-md-offset-1 {
571− margin-left: 8.33333333%; }
572− .col-md-offset-2 {
573− margin-left: 16.66666667%; }
574− .col-md-offset-3 {
575− margin-left: 25%; }
576− .col-md-offset-4 {
577− margin-left: 33.33333333%; }
578− .col-md-offset-5 {
579− margin-left: 41.66666667%; }
580− .col-md-offset-6 {
581− margin-left: 50%; }
582− .col-md-offset-7 {
583− margin-left: 58.33333333%; }
584− .col-md-offset-8 {
585− margin-left: 66.66666667%; }
586− .col-md-offset-9 {
587− margin-left: 75%; }
588− .col-md-offset-10 {
589− margin-left: 83.33333333%; }
590− .col-md-offset-11 {
591− margin-left: 91.66666667%; } }
592−
593−@media only screen and (min-width: 960px) {
594− .col-lg,
595− .col-lg-1,
596− .col-lg-2,
597− .col-lg-3,
598− .col-lg-4,
599− .col-lg-5,
600− .col-lg-6,
601− .col-lg-7,
602− .col-lg-8,
603− .col-lg-9,
604− .col-lg-10,
605− .col-lg-11,
606− .col-lg-12,
607− .col-lg-offset-0,
608− .col-lg-offset-1,
609− .col-lg-offset-2,
610− .col-lg-offset-3,
611− .col-lg-offset-4,
612− .col-lg-offset-5,
613− .col-lg-offset-6,
614− .col-lg-offset-7,
615− .col-lg-offset-8,
616− .col-lg-offset-9,
617− .col-lg-offset-10,
618− .col-lg-offset-11,
619− .col-lg-offset-12 {
620− box-sizing: border-box;
621− flex: 0 0 auto;
622− padding-right: 0.5rem;
623− padding-left: 0.5rem; }
624− .col-lg {
625− flex-grow: 1;
626− flex-basis: 0;
627− max-width: 100%; }
628− .col-lg-1 {
629− flex-basis: 8.33333333%;
630− max-width: 8.33333333%; }
631− .col-lg-2 {
632− flex-basis: 16.66666667%;
633− max-width: 16.66666667%; }
634− .col-lg-3 {
635− flex-basis: 25%;
636− max-width: 25%; }
637− .col-lg-4 {
638− flex-basis: 33.33333333%;
639− max-width: 33.33333333%; }
640− .col-lg-5 {
641− flex-basis: 41.66666667%;
642− max-width: 41.66666667%; }
643− .col-lg-6 {
644− flex-basis: 50%;
645− max-width: 50%; }
646− .col-lg-7 {
647− flex-basis: 58.33333333%;
648− max-width: 58.33333333%; }
649− .col-lg-8 {
650− flex-basis: 66.66666667%;
651− max-width: 66.66666667%; }
652− .col-lg-9 {
653− flex-basis: 75%;
654− max-width: 75%; }
655− .col-lg-10 {
656− flex-basis: 83.33333333%;
657− max-width: 83.33333333%; }
658− .col-lg-11 {
659− flex-basis: 91.66666667%;
660− max-width: 91.66666667%; }
661− .col-lg-12 {
662− flex-basis: 100%;
663− max-width: 100%; }
664− .col-lg-offset-0 {
665− margin-left: 0; }
666− .col-lg-offset-1 {
667− margin-left: 8.33333333%; }
668− .col-lg-offset-2 {
669− margin-left: 16.66666667%; }
670− .col-lg-offset-3 {
671− margin-left: 25%; }
672− .col-lg-offset-4 {
673− margin-left: 33.33333333%; }
674− .col-lg-offset-5 {
675− margin-left: 41.66666667%; }
676− .col-lg-offset-6 {
677− margin-left: 50%; }
678− .col-lg-offset-7 {
679− margin-left: 58.33333333%; }
680− .col-lg-offset-8 {
681− margin-left: 66.66666667%; }
682− .col-lg-offset-9 {
683− margin-left: 75%; }
684− .col-lg-offset-10 {
685− margin-left: 83.33333333%; }
686− .col-lg-offset-11 {
687− margin-left: 91.66666667%; } }
688−
689−.relative {
690− position: relative; }
691−
692−.absolute {
693− position: absolute; }
694−
695−.fixed {
696− position: fixed; }
697−
698−.top-0 {
699− top: 0; }
700−
701−.right-0 {
702− right: 0; }
703−
704−.bottom-0 {
705− bottom: 0; }
706−
707−.left-0 {
708− left: 0; }
709−
710−.cover {
711− background-size: cover;
712− object-fit: cover; }
713−
714−.z1 {
715− z-index: 1; }
716−
717−.z2 {
718− z-index: 2; }
719−
720−.z3 {
721− z-index: 3; }
722−
723−.z4 {
724− z-index: 4; }
725−
726−.z5 {
727− z-index: 5; }
728−
729−.z6 {
730− z-index: 6; }
731−
732−.z7 {
733− z-index: 7; }
734−
735−.z8 {
736− z-index: 8; }
737−
738−.z9 {
739− z-index: 9; }
740−
741−.z10 {
742− z-index: 10; }
743−
744−.hidden {
745− visibility: hidden; }
746−
747−.super-hidden {
748− visibility: hidden;
749− position: fixed;
750− opacity: 0;
751− top: -9999px;
752− left: -99999px; }
753−
754−.visible {
755− visibility: visible; }
756−
757−.align-baseline {
758− vertical-align: baseline; }
759−
760−.align-top {
761− vertical-align: top; }
762−
763−.align-middle {
764− vertical-align: middle; }
765−
766−.align-bottom {
767− vertical-align: bottom; }
768−
769−.flex {
770− display: flex;
771− flex-wrap: wrap; }
772−
773−.flex-column {
774− flex-direction: column; }
775−
776−.flex-wrap {
777− flex-wrap: wrap; }
778−
779−.items-start {
780− align-items: flex-start; }
781−
782−.items-end {
783− align-items: flex-end; }
784−
785−.items-center {
786− align-items: center; }
787−
788−.items-baseline {
789− align-items: baseline; }
790−
791−.items-stretch {
792− align-items: stretch; }
793−
794−.self-start {
795− align-self: flex-start; }
796−
797−.self-end {
798− align-self: flex-end; }
799−
800−.self-center {
801− align-self: center; }
802−
803−.self-baseline {
804− align-self: baseline; }
805−
806−.self-stretch {
807− align-self: stretch; }
808−
809−.justify-start {
810− justify-content: flex-start; }
811−
812−.justify-end {
813− justify-content: flex-end; }
814−
815−.justify-center {
816− justify-content: center; }
817−
818−.justify-between {
819− justify-content: space-between; }
820−
821−.justify-around {
822− justify-content: space-around; }
823−
824−.content-start {
825− align-content: flex-start; }
826−
827−.content-end {
828− align-content: flex-end; }
829−
830−.content-center {
831− align-content: center; }
832−
833−.content-between {
834− align-content: space-between; }
835−
836−.content-around {
837− align-content: space-around; }
838−
839−.content-stretch {
840− align-content: stretch; }
841−
842−.order-0 {
843− order: 0; }
844−
845−.order-1 {
846− order: 1; }
847−
848−.order-2 {
849− order: 2; }
850−
851−.order-3 {
852− order: 3; }
853−
854−.order-last {
855− order: 99999; }
856−
857−.flex-center-all {
858− justify-content: center;
859− align-items: center; }
860−
861−/**********************
862−Opacity Scale
863−**********************/
864−.o-100 {
865− opacity: 1; }
866−
867−.o-90 {
868− opacity: .9; }
869−
870−.o-80 {
871− opacity: .8; }
872−
873−.o-70 {
874− opacity: .7; }
875−
876−.o-60 {
877− opacity: .6; }
878−
879−.o-50 {
880− opacity: .5; }
881−
882−.o-40 {
883− opacity: .4; }
884−
885−.o-30 {
886− opacity: .3; }
887−
888−.o-20 {
889− opacity: .2; }
890−
891−.o-10 {
892− opacity: .1; }
893−
894−.o-05 {
895− opacity: .05; }
896−
897−.o-025 {
898− opacity: .025; }
899−
900−.o-0 {
901− opacity: 0; }
902−
903−.br {
904− border-width: 1px;
905− border-style: solid; }
906−
907−.bs-solid {
908− border-style: solid; }
909−
910−.bw-0 {
911− border-width: 0px; }
912−
913−.btw-0 {
914− border-top-width: 0px; }
915−
916−.brw-0 {
917− border-right-width: 0px; }
918−
919−.bbw-0 {
920− border-bottom-width: 0px; }
921−
922−.blw-0 {
923− border-left-width: 0px; }
924−
925−.bw-1 {
926− border-width: 1px; }
927−
928−.btw-1 {
929− border-top-width: 1px; }
930−
931−.brw-1 {
932− border-right-width: 1px; }
933−
934−.bbw-1 {
935− border-bottom-width: 1px; }
936−
937−.blw-1 {
938− border-left-width: 1px; }
939−
940−.bw-2 {
941− border-width: 2px; }
942−
943−.btw-2 {
944− border-top-width: 2px; }
945−
946−.brw-2 {
947− border-right-width: 2px; }
948−
949−.bbw-2 {
950− border-bottom-width: 2px; }
951−
952−.blw-2 {
953− border-left-width: 2px; }
954−
955−.br-red-dark {
956− border-color: #C80F34; }
957−
958−.br-red {
959− border-color: #EE5432; }
960−
961−.br-orange {
962− border-color: #EE892B; }
963−
964−.br-yellow {
965− border-color: #F8C134; }
966−
967−.br-green-dark {
968− border-color: #286E55; }
969−
970−.br-green {
971− border-color: #2AA779; }
972−
973−.br-green-light {
974− border-color: #2ED196; }
975−
976−.br-blue-dark {
977− border-color: #190D8D; }
978−
979−.br-blue {
980− border-color: #4330FC; }
981−
982−.br-blue-light {
983− border-color: #6184FF; }
984−
985−.br-purple {
986− border-color: #903AE6; }
987−
988−.br-purple-light {
989− border-color: #EC6FF7; }
990−
991−.br-white {
992− border-color: #FFFFFF; }
993−
994−.br-gray-10 {
995− border-color: #F2F2F2; }
996−
997−.br-gray-20 {
998− border-color: #CCCCCC; }
999−
1000−.br-gray-30 {
1001− border-color: #B3B3B3; }
1002−
1003−.br-gray-40 {
1004− border-color: #999999; }
1005−
1006−.br-gray-50 {
1007− border-color: #7F7F7F; }
1008−
1009−.br-gray-60 {
1010− border-color: #676767; }
1011−
1012−.br-gray-70 {
1013− border-color: #4D4D4D; }
1014−
1015−.br-gray-80 {
1016− border-color: #333333; }
1017−
1018−.br-gray-90 {
1019− border-color: #1A1A1A; }
1020−
1021−.br-black {
1022− border-color: #000000; }
1023−
1024−.br-gray {
1025− border-color: #333333; }
1026−
1027−/**********************
1028− Background
1029−**********************/
1030−.bg-red-dark {
1031− background-color: #C80F34; }
1032−
1033−.bg-red {
1034− background-color: #EE5432; }
1035−
1036−.bg-orange {
1037− background-color: #EE892B; }
1038−
1039−.bg-yellow {
1040− background-color: #F8C134; }
1041−
1042−.bg-green-dark {
1043− background-color: #286E55; }
1044−
1045−.bg-green {
1046− background-color: #2AA779; }
1047−
1048−.bg-green-light {
1049− background-color: #2ED196; }
1050−
1051−.bg-blue-dark {
1052− background-color: #190D8D; }
1053−
1054−.bg-blue {
1055− background-color: #4330FC; }
1056−
1057−.bg-blue-light {
1058− background-color: #6184FF; }
1059−
1060−.bg-purple {
1061− background-color: #903AE6; }
1062−
1063−.bg-purple-light {
1064− background-color: #EC6FF7; }
1065−
1066−.bg-white {
1067− background-color: #FFFFFF; }
1068−
1069−.bg-gray-10 {
1070− background-color: #F2F2F2; }
1071−
1072−.bg-gray-20 {
1073− background-color: #CCCCCC; }
1074−
1075−.bg-gray-30 {
1076− background-color: #B3B3B3; }
1077−
1078−.bg-gray-40 {
1079− background-color: #999999; }
1080−
1081−.bg-gray-50 {
1082− background-color: #7F7F7F; }
1083−
1084−.bg-gray-60 {
1085− background-color: #676767; }
1086−
1087−.bg-gray-70 {
1088− background-color: #4D4D4D; }
1089−
1090−.bg-gray-80 {
1091− background-color: #333333; }
1092−
1093−.bg-gray-90 {
1094− background-color: #1A1A1A; }
1095−
1096−.bg-black {
1097− background-color: #000000; }
1098−
1099−.bg-gray {
1100− background-color: #333333; }
1101−
1102−/*
1103− Fluid-to-fixed conversions at standard screen sizes:
1104−
1105− iPhone (portrait) 320px:
1106− - columns: 18px * 12 = 216px // width: 3
1107− - gutter: 6px * 11 = 66px
1108− - outer padding: 18px * 2 = 36px
1109− = 318px
1110−
1111− iPad (portrait) 768px:
1112− - columns: 54px * 12 = 648px // width: 9
1113− - gutter: 6px * 11 = 66px
1114− - outer padding: 24px * 2 = 48px
1115− = 762px
1116−
1117− regular 960px:
1118− - columns: 72px * 12 = 864px // width: 12
1119− - gutter: 6px * 11 = 66px
1120− - outer padding: 18px * 2 = 36px
1121− = 966px
1122−*/
1123−/*
1124− Type scale:
1125−
1126− small : 12px / 16px
1127− body(*) : 16px / 24px
1128− large/5 : 20px / 28px + (? letter spacing, diff font, bold, uppercase, etc.)
1129− 4 : 20px / 28px
1130− 3 : 24px / 32px
1131− 2 : 36px / 52px
1132− 1 : 48px / 64px
1133−
1134−*/
1135−/**********************
1136− Base text styles
1137−**********************/
1138−@font-face {
1139− font-family: "Work Sans";
1140− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Thin.ttf") format("truetype");
1141− font-weight: 100; }
1142−
1143−@font-face {
1144− font-family: "Work Sans";
1145− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-ExtraLight.ttf") format("truetype");
1146− font-weight: 200; }
1147−
1148−@font-face {
1149− font-family: "Work Sans";
1150− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Light.ttf") format("truetype");
1151− font-weight: 300; }
1152−
1153−@font-face {
1154− font-family: "Work Sans";
1155− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Regular.ttf") format("truetype");
1156− font-weight: 400; }
1157−
1158−@font-face {
1159− font-family: "Work Sans";
1160− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Medium.ttf") format("truetype");
1161− font-weight: 500; }
1162−
1163−@font-face {
1164− font-family: "Work Sans";
1165− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-SemiBold.ttf") format("truetype");
1166− font-weight: 600; }
1167−
1168−@font-face {
1169− font-family: "Work Sans";
1170− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Bold.ttf") format("truetype");
1171− font-weight: 700; }
1172−
1173−@font-face {
1174− font-family: "Work Sans";
1175− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-ExtraBold.ttf") format("truetype");
1176− font-weight: 800; }
1177−
1178−@font-face {
1179− font-family: "Work Sans";
1180− src: url("https://storage.googleapis.com/media.urbit.org/fonts/WorkSans-Black.ttf") format("truetype");
1181− font-weight: 900; }
1182−
1183−@font-face {
1184− font-family: "Source Code Pro";
1185− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-extralight.woff");
1186− font-weight: 200; }
1187−
1188−@font-face {
1189− font-family: "Source Code Pro";
1190− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-light.woff");
1191− font-weight: 300; }
1192−
1193−@font-face {
1194− font-family: "Source Code Pro";
1195− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-regular.woff");
1196− font-weight: 400; }
1197−
1198−@font-face {
1199− font-family: "Source Code Pro";
1200− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-medium.woff");
1201− font-weight: 500; }
1202−
1203−@font-face {
1204− font-family: "Source Code Pro";
1205− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-bold.woff");
1206− font-weight: 600; }
1207−
1208−@font-face {
1209− font-family: "Source Code Pro";
1210− src: url("https://storage.googleapis.com/media.urbit.org/fonts/scp-black.woff");
1211− font-weight: 700; }
1212−
1213−* {
1214− font-smoothing: antialiased;
1215− -webkit-font-smoothing: antialiased; }
1216−
1217−body {
1218− font-family: -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
1219− font-size: 3.5rem;
1220− line-height: 6rem;
1221− color: #000000; }
1222−
1223−a {
1224− color: #000000; }
1225−
1226−p {
1227− margin: 0 0 4rem; }
1228−
1229−/**********************
1230− Headings
1231−**********************/
1232−h1,
1233−h2,
1234−h3,
1235−h4,
1236−h5,
1237−.text-heading {
1238− margin: 0;
1239− font-family: "Work Sans";
1240− color: #000000; }
1241−
1242−h1,
1243−.h1 {
1244− font-size: 6rem;
1245− font-weight: 600;
1246− line-height: 8rem;
1247− margin: 0; }
1248−
1249−h2,
1250−.h2 {
1251− font-size: 5rem;
1252− font-weight: 600;
1253− line-height: 6rem;
1254− margin: 0; }
1255−
1256−h3,
1257−.h3 {
1258− font-size: 4rem;
1259− font-weight: 600;
1260− line-height: 5rem;
1261− margin: 0; }
1262−
1263−h4,
1264−.h4 {
1265− font-size: 3.5rem;
1266− font-weight: 600;
1267− line-height: 4rem;
1268− margin: 0; }
1269−
1270−.markdown h1,
1271−.markdown .h1 {
1272− font-size: 6rem;
1273− font-weight: 600;
1274− line-height: 8rem;
1275− margin-top: 0.67em;
1276− margin-bottom: 0.67em; }
1277−
1278−.markdown h2,
1279−.markdown .h2 {
1280− font-size: 5rem;
1281− font-weight: 600;
1282− line-height: 6rem;
1283− margin-top: 0.83em;
1284− margin-bottom: 0.83em; }
1285−
1286−.markdown h3,
1287−.markdown .h3 {
1288− font-size: 4rem;
1289− font-weight: 600;
1290− margin-top: 1em;
1291− margin-bottom: 1em; }
1292−
1293−.markdown h4,
1294−.markdown .h4 {
1295− font-size: 3.5rem;
1296− font-weight: 600;
1297− line-height: 4rem;
1298− margin-top: 1.33em;
1299− margin-bottom: 1.33em; }
1300−
1301−caption, .text-sm {
1302− font-size: 3rem;
1303− line-height: 5rem; }
1304−
1305−.text-md {
1306− font-size: 4rem;
1307− line-height: 6rem; }
1308−
1309−.text-lg {
1310− font-size: 5rem;
1311− line-height: 8rem; }
1312−
1313−/**********************
1314− Discretionary ligatures
1315−**********************/
1316−.dlig {
1317− font-variant-ligatures: discretionary-ligatures; }
1318−
1319−/**********************
1320− Responsive type
1321−**********************/
1322−/* @media #($viewport-sm) {
1323− .sm-center{}
1324−} */
1325−/**********************
1326− Preformatted
1327−**********************/
1328−pre,
1329−code {
1330− background-color: #F2F2F2;
1331− padding: 1rem; }
1332−
1333−pre,
1334−code,
1335−.code-block,
1336−.text-code,
1337−.text-mono {
1338− font-family: "Source Code Pro", "Roboto mono", "Courier New", monospace; }
1339−
1340−.text-code {
1341− background-color: #F2F2F2;
1342− color: #000000; }
1343−
1344−.code-block {
1345− background-color: #F2F2F2;
1346− padding: 5rem;
1347− white-space: pre-wrap; }
1348−
1349−.code-block .text-code {
1350− font-weight: 200; }
1351−
1352−/**********************
1353− Formatting
1354−**********************/
1355−u, .underline {
1356− text-decoration: underline; }
1357−
1358−s, .strikethrough {
1359− text-decoration: line-through; }
1360−
1361−em, .italic {
1362− font-style: italic; }
1363−
1364−.capitalize {
1365− text-transform: capitalize; }
1366−
1367−.uppercase {
1368− text-transform: uppercase; }
1369−
1370−.text-300 {
1371− font-weight: 300; }
1372−
1373−.text-400 {
1374− font-weight: 400; }
1375−
1376−.text-500 {
1377− font-weight: 500; }
1378−
1379−.text-600 {
1380− font-weight: 600; }
1381−
1382−b, .text-700 {
1383− font-weight: 700; }
1384−
1385−.text-800 {
1386− font-weight: 800; }
1387−
1388−.h-font {
1389− font-family: "Work Sans"; }
1390−
1391−/**********************
1392−Text color
1393−**********************/
1394−.red-dark {
1395− color: #C80F34; }
1396−
1397−.red {
1398− color: #EE5432; }
1399−
1400−.orange {
1401− color: #EE892B; }
1402−
1403−.yellow {
1404− color: #F8C134; }
1405−
1406−.green-dark {
1407− color: #286E55; }
1408−
1409−.green {
1410− color: #2AA779; }
1411−
1412−.green-light {
1413− color: #2ED196; }
1414−
1415−.blue-dark {
1416− color: #190D8D; }
1417−
1418−.blue {
1419− color: #4330FC; }
1420−
1421−.blue-light {
1422− color: #6184FF; }
1423−
1424−.purple {
1425− color: #903AE6; }
1426−
1427−.purple-light {
1428− color: #EC6FF7; }
1429−
1430−.white {
1431− color: #FFFFFF; }
1432−
1433−.gray-10 {
1434− color: #F2F2F2; }
1435−
1436−.gray-20 {
1437− color: #CCCCCC; }
1438−
1439−.gray-30 {
1440− color: #B3B3B3; }
1441−
1442−.gray-40 {
1443− color: #999999; }
1444−
1445−.gray-50 {
1446− color: #7F7F7F; }
1447−
1448−.gray-60 {
1449− color: #676767; }
1450−
1451−.gray-70 {
1452− color: #4D4D4D; }
1453−
1454−.gray-80 {
1455− color: #333333; }
1456−
1457−.gray-90 {
1458− color: #1A1A1A; }
1459−
1460−.black {
1461− color: #000000; }
1462−
1463−/**********************
1464− Alignment
1465−**********************/
1466−.center {
1467− text-align: center; }
1468−
1469−.right {
1470− text-align: right; }
1471−
1472−.justify {
1473− text-align: justify; }
1474−
1475−/**********************
1476− Buttons
1477−**********************/
1478−button {
1479− border: none;
1480− outline: none;
1481− border-radius: 0; }
1482−
1483−button, .btn {
1484− font-family: "Work Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
1485− font-weight: 500;
1486− font-size: 4rem;
1487− line-height: 4rem;
1488− user-select: none;
1489− padding: 3rem 6rem;
1490− color: #000000;
1491− background-color: #B3B3B3;
1492− white-space: nowrap;
1493− margin: 0 0 6px; }
1494−
1495−.btn-sm {
1496− font-size: 3rem;
1497− line-height: 3rem;
1498− padding: 2rem 4rem; }
1499−
1500−.btn-primary {
1501− background-color: #4330FC;
1502− color: #FFFFFF; }
1503−
1504−.btn-secondary {
1505− background-color: #2AA779; }
1506−
1507−.btn-tertiary {
1508− background-color: #676767;
1509− color: #FFFFFF; }
1510−
1511−.btn-warning {
1512− background-color: #EE5432;
1513− color: #FFFFFF; }
1514−
1515−.btn-group .btn {
1516− display: inline-block; }
1517−
1518−.btn-group .btn:not(.active) {
1519− background-color: #B3B3B3;
1520− color: #000000; }
1521−
1522−label {
1523− display: block;
1524− margin-bottom: 1rem;
1525− font-weight: 700; }
1526−
1527−.error-label {
1528− display: none;
1529− color: #EE5432;
1530− font-size: 4rem;
1531− line-height: 4rem;
1532− margin-top: 2rem; }
1533−
1534−.input-group {
1535− margin: 0 0 2rem; }
1536−
1537−.input-group.error textarea,
1538−.input-group.error input[type="text"],
1539−.input-group.error input[type="email"] {
1540− border-width: 2px;
1541− border-style: solid;
1542− border-color: #EE5432; }
1543−
1544−.input-group.error .error-label {
1545− display: block; }
1546−
1547−fieldset {
1548− border: none;
1549− margin: 0;
1550− padding: 0; }
1551−
1552−.checkbox-group label,
1553−.checkbox-group input,
1554−.radio-group label,
1555−.radio-group input {
1556− font-weight: 400;
1557− display: inline-block; }
1558−
1559−.select-dropdown {
1560− display: flex;
1561− border-width: 2px;
1562− border-style: solid;
1563− border-color: black;
1564− overflow: hidden;
1565− background-color: #FFFFFF; }
1566−
1567−.select-dropdown select {
1568− padding: 5px 8px;
1569− width: 130%;
1570− border: none;
1571− box-shadow: none;
1572− background: transparent;
1573− background-image: none;
1574− -webkit-appearance: none;
1575− -moz-appearance: none;
1576− appearance: none; }
1577−
1578−.select-dropdown select:focus {
1579− outline: none; }
1580−
1581−.triangle-down {
1582− border-left: 2rem solid transparent;
1583− border-right: 2rem solid transparent;
1584− border-top: 4rem solid #000000; }
1585−
1586−.select-dropdown .triangle-down {
1587− border-width: 2rem 1rem 0rem 1rem;
1588− position: relative;
1589− top: 14px;
1590− right: 8px; }
1591−
1592−/*
1593− Available/supported icons:
1594−
1595− →
1596− ←
1597− ∙
1598−
1599−*/
1600−.icon-arrow-right:before {
1601− content: "→"; }
1602−
1603−.icon-arrow-left:before {
1604− content: "←"; }
1605−
1606−.icon-arrow-up:before {
1607− content: "↑"; }
1608−
1609−.icon-arrow-down:before {
1610− content: "↓"; }
1611−
1612−.icon-cross:before {
1613− content: "×"; }
1614−
1615−.icon-ellipsis:before {
1616− content: "...";
1617− position: relative;
1618− bottom: 6px; }
1619−
1620−.selected:before {
1621− content: "∙"; }
1622−
1623−.icon {
1624− margin-right: .6rem; }
1625−
1626−.icon.prev {
1627− width: 1px;
1628− height: 1px;
1629− border: 12.0006px solid transparent;
1630− border-right: 18px solid #000000;
1631− border-left: 0 solid transparent; }
1632−
1633−.icon.next {
1634− width: 1px;
1635− height: 1px;
1636− border: 12.0006px solid transparent;
1637− border-left: 18px solid #000000;
1638− border-right: 0 solid transparent;
1639− margin-right: 0; }
1640−
1641−.icon.up {
1642− width: 1px;
1643− height: 1px;
1644− border: 12.0006px solid transparent;
1645− border-bottom: 18px solid #000000;
1646− border-top: 0 solid transparent; }
1647−
1648−/**********************
1649− Shapes
1650−**********************/
1651−.circle {
1652− display: inline-block;
1653− padding: 2rem;
1654− border-radius: 50%;
1655− border: 2px solid #000000;
1656− text-align: center; }
1657−
1658−.circle-sm {
1659− padding: 1rem; }
1660−
1661−.circle-lg {
1662− padding: 4rem; }
1663−
1664−.circle-pill {
1665− border-radius: 9999px;
1666− width: 10rem; }
1667−
1668−.circle-pill.circle-lg {
1669− width: 20rem; }
1670−
1671−.square {
1672− display: inline-block;
1673− padding: 2rem;
1674− border: 2px solid #000000;
1675− text-align: center; }
1676−
1677−.square-sm {
1678− padding: 1rem; }
1679−
1680−.square-lg {
1681− padding: 4rem; }
1682−
1683−.square-rect {
1684− width: 10rem; }
1685−
1686−.square-rect.square-lg {
1687− width: 20rem; }
1688−
1689−/**********************
1690− Shape Colors
1691−**********************/
1692−.shape-black {
1693− background-color: #000000; }
1694−
1695−.shape-red {
1696− background-color: #EE5432;
1697− border-color: #EE5432; }
1698−
1699−.shape-blue {
1700− background-color: #4330FC;
1701− border-color: #4330FC; }
1702−
1703−.shape-blue-light {
1704− background-color: #6184FF;
1705− border-color: #6184FF; }
1706−
1707−.shape-orange {
1708− background-color: #EE892B;
1709− border-color: #EE892B; }
1710−
1711−.shape-green {
1712− background-color: #2AA779;
1713− border-color: #2AA779; }
1714−
1715−.shape-gray-60 {
1716− background-color: #676767;
1717− border-color: #676767; }
1718−
1719−.shape-gray-30 {
1720− background-color: #B3B3B3;
1721− border-color: #B3B3B3; }
1722−
1723−.shape-gray-10 {
1724− background-color: #F2F2F2;
1725− border-color: #F2F2F2; }
1726−
1727−.shape-gray {
1728− background-color: #333333;
1729− border-color: #333333; }
1730−
1731−.triangle-base {
1732− display: inline-block;
1733− width: 0;
1734− height: 0; }
1735−
1736−.triangle-down {
1737− border-left: 2rem solid transparent;
1738− border-right: 2rem solid transparent;
1739− border-top: 4rem solid #000000; }
1740−
1741−/**********************
1742− Urbit logo
1743−**********************/
1744−.urbit-logo {
1745− width: 72px;
1746− height: 72px;
1747− display: inline-block;
1748− border-radius: 50%;
1749− vertical-align: middle;
1750− border: 5px solid #FFFFFF;
1751− background-color: transparent; }
1752− .urbit-logo:before {
1753− content: "~";
1754− color: #FFFFFF;
1755− font-size: 72px;
1756− vertical-align: middle;
1757− line-height: 54px;
1758− text-align: center;
1759− width: 2rem;
1760− display: inline-block;
1761− font-family: "Work Sans";
1762− font-weight: 600;
1763− margin-right: 30px;
1764− margin-top: 3px; }
1765−
1766−.urbit-logo-solid {
1767− border-color: #000000; }
1768− .urbit-logo-solid:before {
1769− color: #000000; }
1770−
1771−/**********************
1772− Base elements
1773−**********************/
1774−section {
1775− margin: 0 0 2rem;
1776− border: none; }
1777−
1778−blockquote {
1779− border-left: 6px solid #000000;
1780− margin: 24px 0;
1781− padding-left: 18px; }
1782−
1783−hr {
1784− margin: 4rem 0;
1785− width: 100%;
1786− height: 1rem;
1787− border: 0;
1788− background-color: #333333; }
1789−
1790−/**********************
1791− Lists
1792−**********************/
1793−ul {
1794− padding-left: 4rem;
1795− list-style: disc outside; }
1796− ul li {
1797− margin-bottom: 2rem;
1798− padding-left: 2rem; }
1799−
1800−ul ol,
1801−ul ul,
1802−ol ul,
1803−ul ol {
1804− margin: 2rem; }
1805− ul ol li,
1806− ul ul li,
1807− ol ul li,
1808− ul ol li {
1809− margin-bottom: 1rem; }
1810−
1811−ul.list-reset {
1812− list-style: none;
1813− padding-left: 0; }
1814− ul.list-reset li {
1815− padding-left: 0; }
1816−
1817−ol {
1818− list-style: none;
1819− padding-left: 0; }
1820−
1821−ol > li {
1822− counter-increment: item;
1823− margin-left: 0;
1824− margin-bottom: 1rem; }
1825−
1826−ol > li:before {
1827− content: counter(item);
1828− font-weight: 700;
1829− vertical-align: center;
1830− display: inline-block;
1831− width: 6rem;
1832− text-align: left; }
1833−
1834−/*
1835− Fluid-to-fixed conversions at standard screen sizes:
1836−
1837− iPhone (portrait) 320px:
1838− - columns: 18px * 12 = 216px // width: 3
1839− - gutter: 6px * 11 = 66px
1840− - outer padding: 18px * 2 = 36px
1841− = 318px
1842−
1843− iPad (portrait) 768px:
1844− - columns: 54px * 12 = 648px // width: 9
1845− - gutter: 6px * 11 = 66px
1846− - outer padding: 24px * 2 = 48px
1847− = 762px
1848−
1849− regular 960px:
1850− - columns: 72px * 12 = 864px // width: 12
1851− - gutter: 6px * 11 = 66px
1852− - outer padding: 18px * 2 = 36px
1853− = 966px
1854−*/
1855−/**********************
1856− Utility classes
1857−**********************/
1858−.w-0 {
1859− width: 0rem; }
1860−
1861−.h-0 {
1862− height: 0rem; }
1863−
1864−.m-0 {
1865− margin: 0rem; }
1866−
1867−.mt-0 {
1868− margin-top: 0rem; }
1869−
1870−.mb-0 {
1871− margin-bottom: 0rem; }
1872−
1873−.ml-0 {
1874− margin-left: 0rem; }
1875−
1876−.mr-0 {
1877− margin-right: 0rem; }
1878−
1879−.mv-0 {
1880− margin-top: 0rem;
1881− margin-bottom: 0rem; }
1882−
1883−.mh-0 {
1884− margin-left: 0rem;
1885− margin-right: 0rem; }
1886−
1887−.p-0 {
1888− padding: 0rem; }
1889−
1890−.pt-0 {
1891− padding-top: 0rem; }
1892−
1893−.pb-0 {
1894− padding-bottom: 0rem; }
1895−
1896−.pl-0 {
1897− padding-left: 0rem; }
1898−
1899−.pr-0 {
1900− padding-right: 0rem; }
1901−
1902−.pv-0 {
1903− padding-top: 0rem;
1904− padding-bottom: 0rem; }
1905−
1906−.ph-0 {
1907− padding-left: 0rem;
1908− padding-right: 0rem; }
1909−
1910−.w-1 {
1911− width: 1rem; }
1912−
1913−.h-1 {
1914− height: 1rem; }
1915−
1916−.m-1 {
1917− margin: 1rem; }
1918−
1919−.mt-1 {
1920− margin-top: 1rem; }
1921−
1922−.mb-1 {
1923− margin-bottom: 1rem; }
1924−
1925−.ml-1 {
1926− margin-left: 1rem; }
1927−
1928−.mr-1 {
1929− margin-right: 1rem; }
1930−
1931−.mv-1 {
1932− margin-top: 1rem;
1933− margin-bottom: 1rem; }
1934−
1935−.mh-1 {
1936− margin-left: 1rem;
1937− margin-right: 1rem; }
1938−
1939−.p-1 {
1940− padding: 1rem; }
1941−
1942−.pt-1 {
1943− padding-top: 1rem; }
1944−
1945−.pb-1 {
1946− padding-bottom: 1rem; }
1947−
1948−.pl-1 {
1949− padding-left: 1rem; }
1950−
1951−.pr-1 {
1952− padding-right: 1rem; }
1953−
1954−.pv-1 {
1955− padding-top: 1rem;
1956− padding-bottom: 1rem; }
1957−
1958−.ph-1 {
1959− padding-left: 1rem;
1960− padding-right: 1rem; }
1961−
1962−.w-2 {
1963− width: 2rem; }
1964−
1965−.h-2 {
1966− height: 2rem; }
1967−
1968−.m-2 {
1969− margin: 2rem; }
1970−
1971−.mt-2 {
1972− margin-top: 2rem; }
1973−
1974−.mb-2 {
1975− margin-bottom: 2rem; }
1976−
1977−.ml-2 {
1978− margin-left: 2rem; }
1979−
1980−.mr-2 {
1981− margin-right: 2rem; }
1982−
1983−.mv-2 {
1984− margin-top: 2rem;
1985− margin-bottom: 2rem; }
1986−
1987−.mh-2 {
1988− margin-left: 2rem;
1989− margin-right: 2rem; }
1990−
1991−.p-2 {
1992− padding: 2rem; }
1993−
1994−.pt-2 {
1995− padding-top: 2rem; }
1996−
1997−.pb-2 {
1998− padding-bottom: 2rem; }
1999−
2000−.pl-2 {
2001− padding-left: 2rem; }
2002−
2003−.pr-2 {
2004− padding-right: 2rem; }
2005−
2006−.pv-2 {
2007− padding-top: 2rem;
2008− padding-bottom: 2rem; }
2009−
2010−.ph-2 {
2011− padding-left: 2rem;
2012− padding-right: 2rem; }
2013−
2014−.w-3 {
2015− width: 3rem; }
2016−
2017−.h-3 {
2018− height: 3rem; }
2019−
2020−.m-3 {
2021− margin: 3rem; }
2022−
2023−.mt-3 {
2024− margin-top: 3rem; }
2025−
2026−.mb-3 {
2027− margin-bottom: 3rem; }
2028−
2029−.ml-3 {
2030− margin-left: 3rem; }
2031−
2032−.mr-3 {
2033− margin-right: 3rem; }
2034−
2035−.mv-3 {
2036− margin-top: 3rem;
2037− margin-bottom: 3rem; }
2038−
2039−.mh-3 {
2040− margin-left: 3rem;
2041− margin-right: 3rem; }
2042−
2043−.p-3 {
2044− padding: 3rem; }
2045−
2046−.pt-3 {
2047− padding-top: 3rem; }
2048−
2049−.pb-3 {
2050− padding-bottom: 3rem; }
2051−
2052−.pl-3 {
2053− padding-left: 3rem; }
2054−
2055−.pr-3 {
2056− padding-right: 3rem; }
2057−
2058−.pv-3 {
2059− padding-top: 3rem;
2060− padding-bottom: 3rem; }
2061−
2062−.ph-3 {
2063− padding-left: 3rem;
2064− padding-right: 3rem; }
2065−
2066−.w-4 {
2067− width: 4rem; }
2068−
2069−.h-4 {
2070− height: 4rem; }
2071−
2072−.m-4 {
2073− margin: 4rem; }
2074−
2075−.mt-4 {
2076− margin-top: 4rem; }
2077−
2078−.mb-4 {
2079− margin-bottom: 4rem; }
2080−
2081−.ml-4 {
2082− margin-left: 4rem; }
2083−
2084−.mr-4 {
2085− margin-right: 4rem; }
2086−
2087−.mv-4 {
2088− margin-top: 4rem;
2089− margin-bottom: 4rem; }
2090−
2091−.mh-4 {
2092− margin-left: 4rem;
2093− margin-right: 4rem; }
2094−
2095−.p-4 {
2096− padding: 4rem; }
2097−
2098−.pt-4 {
2099− padding-top: 4rem; }
2100−
2101−.pb-4 {
2102− padding-bottom: 4rem; }
2103−
2104−.pl-4 {
2105− padding-left: 4rem; }
2106−
2107−.pr-4 {
2108− padding-right: 4rem; }
2109−
2110−.pv-4 {
2111− padding-top: 4rem;
2112− padding-bottom: 4rem; }
2113−
2114−.ph-4 {
2115− padding-left: 4rem;
2116− padding-right: 4rem; }
2117−
2118−.w-5 {
2119− width: 5rem; }
2120−
2121−.h-5 {
2122− height: 5rem; }
2123−
2124−.m-5 {
2125− margin: 5rem; }
2126−
2127−.mt-5 {
2128− margin-top: 5rem; }
2129−
2130−.mb-5 {
2131− margin-bottom: 5rem; }
2132−
2133−.ml-5 {
2134− margin-left: 5rem; }
2135−
2136−.mr-5 {
2137− margin-right: 5rem; }
2138−
2139−.mv-5 {
2140− margin-top: 5rem;
2141− margin-bottom: 5rem; }
2142−
2143−.mh-5 {
2144− margin-left: 5rem;
2145− margin-right: 5rem; }
2146−
2147−.p-5 {
2148− padding: 5rem; }
2149−
2150−.pt-5 {
2151− padding-top: 5rem; }
2152−
2153−.pb-5 {
2154− padding-bottom: 5rem; }
2155−
2156−.pl-5 {
2157− padding-left: 5rem; }
2158−
2159−.pr-5 {
2160− padding-right: 5rem; }
2161−
2162−.pv-5 {
2163− padding-top: 5rem;
2164− padding-bottom: 5rem; }
2165−
2166−.ph-5 {
2167− padding-left: 5rem;
2168− padding-right: 5rem; }
2169−
2170−.w-6 {
2171− width: 6rem; }
2172−
2173−.h-6 {
2174− height: 6rem; }
2175−
2176−.m-6 {
2177− margin: 6rem; }
2178−
2179−.mt-6 {
2180− margin-top: 6rem; }
2181−
2182−.mb-6 {
2183− margin-bottom: 6rem; }
2184−
2185−.ml-6 {
2186− margin-left: 6rem; }
2187−
2188−.mr-6 {
2189− margin-right: 6rem; }
2190−
2191−.mv-6 {
2192− margin-top: 6rem;
2193− margin-bottom: 6rem; }
2194−
2195−.mh-6 {
2196− margin-left: 6rem;
2197− margin-right: 6rem; }
2198−
2199−.p-6 {
2200− padding: 6rem; }
2201−
2202−.pt-6 {
2203− padding-top: 6rem; }
2204−
2205−.pb-6 {
2206− padding-bottom: 6rem; }
2207−
2208−.pl-6 {
2209− padding-left: 6rem; }
2210−
2211−.pr-6 {
2212− padding-right: 6rem; }
2213−
2214−.pv-6 {
2215− padding-top: 6rem;
2216− padding-bottom: 6rem; }
2217−
2218−.ph-6 {
2219− padding-left: 6rem;
2220− padding-right: 6rem; }
2221−
2222−.w-7 {
2223− width: 7rem; }
2224−
2225−.h-7 {
2226− height: 7rem; }
2227−
2228−.m-7 {
2229− margin: 7rem; }
2230−
2231−.mt-7 {
2232− margin-top: 7rem; }
2233−
2234−.mb-7 {
2235− margin-bottom: 7rem; }
2236−
2237−.ml-7 {
2238− margin-left: 7rem; }
2239−
2240−.mr-7 {
2241− margin-right: 7rem; }
2242−
2243−.mv-7 {
2244− margin-top: 7rem;
2245− margin-bottom: 7rem; }
2246−
2247−.mh-7 {
2248− margin-left: 7rem;
2249− margin-right: 7rem; }
2250−
2251−.p-7 {
2252− padding: 7rem; }
2253−
2254−.pt-7 {
2255− padding-top: 7rem; }
2256−
2257−.pb-7 {
2258− padding-bottom: 7rem; }
2259−
2260−.pl-7 {
2261− padding-left: 7rem; }
2262−
2263−.pr-7 {
2264− padding-right: 7rem; }
2265−
2266−.pv-7 {
2267− padding-top: 7rem;
2268− padding-bottom: 7rem; }
2269−
2270−.ph-7 {
2271− padding-left: 7rem;
2272− padding-right: 7rem; }
2273−
2274−.w-8 {
2275− width: 8rem; }
2276−
2277−.h-8 {
2278− height: 8rem; }
2279−
2280−.m-8 {
2281− margin: 8rem; }
2282−
2283−.mt-8 {
2284− margin-top: 8rem; }
2285−
2286−.mb-8 {
2287− margin-bottom: 8rem; }
2288−
2289−.ml-8 {
2290− margin-left: 8rem; }
2291−
2292−.mr-8 {
2293− margin-right: 8rem; }
2294−
2295−.mv-8 {
2296− margin-top: 8rem;
2297− margin-bottom: 8rem; }
2298−
2299−.mh-8 {
2300− margin-left: 8rem;
2301− margin-right: 8rem; }
2302−
2303−.p-8 {
2304− padding: 8rem; }
2305−
2306−.pt-8 {
2307− padding-top: 8rem; }
2308−
2309−.pb-8 {
2310− padding-bottom: 8rem; }
2311−
2312−.pl-8 {
2313− padding-left: 8rem; }
2314−
2315−.pr-8 {
2316− padding-right: 8rem; }
2317−
2318−.pv-8 {
2319− padding-top: 8rem;
2320− padding-bottom: 8rem; }
2321−
2322−.ph-8 {
2323− padding-left: 8rem;
2324− padding-right: 8rem; }
2325−
2326−.w-9 {
2327− width: 9rem; }
2328−
2329−.h-9 {
2330− height: 9rem; }
2331−
2332−.m-9 {
2333− margin: 9rem; }
2334−
2335−.mt-9 {
2336− margin-top: 9rem; }
2337−
2338−.mb-9 {
2339− margin-bottom: 9rem; }
2340−
2341−.ml-9 {
2342− margin-left: 9rem; }
2343−
2344−.mr-9 {
2345− margin-right: 9rem; }
2346−
2347−.mv-9 {
2348− margin-top: 9rem;
2349− margin-bottom: 9rem; }
2350−
2351−.mh-9 {
2352− margin-left: 9rem;
2353− margin-right: 9rem; }
2354−
2355−.p-9 {
2356− padding: 9rem; }
2357−
2358−.pt-9 {
2359− padding-top: 9rem; }
2360−
2361−.pb-9 {
2362− padding-bottom: 9rem; }
2363−
2364−.pl-9 {
2365− padding-left: 9rem; }
2366−
2367−.pr-9 {
2368− padding-right: 9rem; }
2369−
2370−.pv-9 {
2371− padding-top: 9rem;
2372− padding-bottom: 9rem; }
2373−
2374−.ph-9 {
2375− padding-left: 9rem;
2376− padding-right: 9rem; }
2377−
2378−.w-10 {
2379− width: 10rem; }
2380−
2381−.h-10 {
2382− height: 10rem; }
2383−
2384−.m-10 {
2385− margin: 10rem; }
2386−
2387−.mt-10 {
2388− margin-top: 10rem; }
2389−
2390−.mb-10 {
2391− margin-bottom: 10rem; }
2392−
2393−.ml-10 {
2394− margin-left: 10rem; }
2395−
2396−.mr-10 {
2397− margin-right: 10rem; }
2398−
2399−.mv-10 {
2400− margin-top: 10rem;
2401− margin-bottom: 10rem; }
2402−
2403−.mh-10 {
2404− margin-left: 10rem;
2405− margin-right: 10rem; }
2406−
2407−.p-10 {
2408− padding: 10rem; }
2409−
2410−.pt-10 {
2411− padding-top: 10rem; }
2412−
2413−.pb-10 {
2414− padding-bottom: 10rem; }
2415−
2416−.pl-10 {
2417− padding-left: 10rem; }
2418−
2419−.pr-10 {
2420− padding-right: 10rem; }
2421−
2422−.pv-10 {
2423− padding-top: 10rem;
2424− padding-bottom: 10rem; }
2425−
2426−.ph-10 {
2427− padding-left: 10rem;
2428− padding-right: 10rem; }
2429−
2430−.w-11 {
2431− width: 11rem; }
2432−
2433−.h-11 {
2434− height: 11rem; }
2435−
2436−.m-11 {
2437− margin: 11rem; }
2438−
2439−.mt-11 {
2440− margin-top: 11rem; }
2441−
2442−.mb-11 {
2443− margin-bottom: 11rem; }
2444−
2445−.ml-11 {
2446− margin-left: 11rem; }
2447−
2448−.mr-11 {
2449− margin-right: 11rem; }
2450−
2451−.mv-11 {
2452− margin-top: 11rem;
2453− margin-bottom: 11rem; }
2454−
2455−.mh-11 {
2456− margin-left: 11rem;
2457− margin-right: 11rem; }
2458−
2459−.p-11 {
2460− padding: 11rem; }
2461−
2462−.pt-11 {
2463− padding-top: 11rem; }
2464−
2465−.pb-11 {
2466− padding-bottom: 11rem; }
2467−
2468−.pl-11 {
2469− padding-left: 11rem; }
2470−
2471−.pr-11 {
2472− padding-right: 11rem; }
2473−
2474−.pv-11 {
2475− padding-top: 11rem;
2476− padding-bottom: 11rem; }
2477−
2478−.ph-11 {
2479− padding-left: 11rem;
2480− padding-right: 11rem; }
2481−
2482−.w-12 {
2483− width: 12rem; }
2484−
2485−.h-12 {
2486− height: 12rem; }
2487−
2488−.m-12 {
2489− margin: 12rem; }
2490−
2491−.mt-12 {
2492− margin-top: 12rem; }
2493−
2494−.mb-12 {
2495− margin-bottom: 12rem; }
2496−
2497−.ml-12 {
2498− margin-left: 12rem; }
2499−
2500−.mr-12 {
2501− margin-right: 12rem; }
2502−
2503−.mv-12 {
2504− margin-top: 12rem;
2505− margin-bottom: 12rem; }
2506−
2507−.mh-12 {
2508− margin-left: 12rem;
2509− margin-right: 12rem; }
2510−
2511−.p-12 {
2512− padding: 12rem; }
2513−
2514−.pt-12 {
2515− padding-top: 12rem; }
2516−
2517−.pb-12 {
2518− padding-bottom: 12rem; }
2519−
2520−.pl-12 {
2521− padding-left: 12rem; }
2522−
2523−.pr-12 {
2524− padding-right: 12rem; }
2525−
2526−.pv-12 {
2527− padding-top: 12rem;
2528− padding-bottom: 12rem; }
2529−
2530−.ph-12 {
2531− padding-left: 12rem;
2532− padding-right: 12rem; }
2533−
2534−.w-13 {
2535− width: 13rem; }
2536−
2537−.h-13 {
2538− height: 13rem; }
2539−
2540−.m-13 {
2541− margin: 13rem; }
2542−
2543−.mt-13 {
2544− margin-top: 13rem; }
2545−
2546−.mb-13 {
2547− margin-bottom: 13rem; }
2548−
2549−.ml-13 {
2550− margin-left: 13rem; }
2551−
2552−.mr-13 {
2553− margin-right: 13rem; }
2554−
2555−.mv-13 {
2556− margin-top: 13rem;
2557− margin-bottom: 13rem; }
2558−
2559−.mh-13 {
2560− margin-left: 13rem;
2561− margin-right: 13rem; }
2562−
2563−.p-13 {
2564− padding: 13rem; }
2565−
2566−.pt-13 {
2567− padding-top: 13rem; }
2568−
2569−.pb-13 {
2570− padding-bottom: 13rem; }
2571−
2572−.pl-13 {
2573− padding-left: 13rem; }
2574−
2575−.pr-13 {
2576− padding-right: 13rem; }
2577−
2578−.pv-13 {
2579− padding-top: 13rem;
2580− padding-bottom: 13rem; }
2581−
2582−.ph-13 {
2583− padding-left: 13rem;
2584− padding-right: 13rem; }
2585−
2586−.w-14 {
2587− width: 14rem; }
2588−
2589−.h-14 {
2590− height: 14rem; }
2591−
2592−.m-14 {
2593− margin: 14rem; }
2594−
2595−.mt-14 {
2596− margin-top: 14rem; }
2597−
2598−.mb-14 {
2599− margin-bottom: 14rem; }
2600−
2601−.ml-14 {
2602− margin-left: 14rem; }
2603−
2604−.mr-14 {
2605− margin-right: 14rem; }
2606−
2607−.mv-14 {
2608− margin-top: 14rem;
2609− margin-bottom: 14rem; }
2610−
2611−.mh-14 {
2612− margin-left: 14rem;
2613− margin-right: 14rem; }
2614−
2615−.p-14 {
2616− padding: 14rem; }
2617−
2618−.pt-14 {
2619− padding-top: 14rem; }
2620−
2621−.pb-14 {
2622− padding-bottom: 14rem; }
2623−
2624−.pl-14 {
2625− padding-left: 14rem; }
2626−
2627−.pr-14 {
2628− padding-right: 14rem; }
2629−
2630−.pv-14 {
2631− padding-top: 14rem;
2632− padding-bottom: 14rem; }
2633−
2634−.ph-14 {
2635− padding-left: 14rem;
2636− padding-right: 14rem; }
2637−
2638−.w-15 {
2639− width: 15rem; }
2640−
2641−.h-15 {
2642− height: 15rem; }
2643−
2644−.m-15 {
2645− margin: 15rem; }
2646−
2647−.mt-15 {
2648− margin-top: 15rem; }
2649−
2650−.mb-15 {
2651− margin-bottom: 15rem; }
2652−
2653−.ml-15 {
2654− margin-left: 15rem; }
2655−
2656−.mr-15 {
2657− margin-right: 15rem; }
2658−
2659−.mv-15 {
2660− margin-top: 15rem;
2661− margin-bottom: 15rem; }
2662−
2663−.mh-15 {
2664− margin-left: 15rem;
2665− margin-right: 15rem; }
2666−
2667−.p-15 {
2668− padding: 15rem; }
2669−
2670−.pt-15 {
2671− padding-top: 15rem; }
2672−
2673−.pb-15 {
2674− padding-bottom: 15rem; }
2675−
2676−.pl-15 {
2677− padding-left: 15rem; }
2678−
2679−.pr-15 {
2680− padding-right: 15rem; }
2681−
2682−.pv-15 {
2683− padding-top: 15rem;
2684− padding-bottom: 15rem; }
2685−
2686−.ph-15 {
2687− padding-left: 15rem;
2688− padding-right: 15rem; }
2689−
2690−.w-16 {
2691− width: 16rem; }
2692−
2693−.h-16 {
2694− height: 16rem; }
2695−
2696−.m-16 {
2697− margin: 16rem; }
2698−
2699−.mt-16 {
2700− margin-top: 16rem; }
2701−
2702−.mb-16 {
2703− margin-bottom: 16rem; }
2704−
2705−.ml-16 {
2706− margin-left: 16rem; }
2707−
2708−.mr-16 {
2709− margin-right: 16rem; }
2710−
2711−.mv-16 {
2712− margin-top: 16rem;
2713− margin-bottom: 16rem; }
2714−
2715−.mh-16 {
2716− margin-left: 16rem;
2717− margin-right: 16rem; }
2718−
2719−.p-16 {
2720− padding: 16rem; }
2721−
2722−.pt-16 {
2723− padding-top: 16rem; }
2724−
2725−.pb-16 {
2726− padding-bottom: 16rem; }
2727−
2728−.pl-16 {
2729− padding-left: 16rem; }
2730−
2731−.pr-16 {
2732− padding-right: 16rem; }
2733−
2734−.pv-16 {
2735− padding-top: 16rem;
2736− padding-bottom: 16rem; }
2737−
2738−.ph-16 {
2739− padding-left: 16rem;
2740− padding-right: 16rem; }
2741−
2742−.w-17 {
2743− width: 17rem; }
2744−
2745−.h-17 {
2746− height: 17rem; }
2747−
2748−.m-17 {
2749− margin: 17rem; }
2750−
2751−.mt-17 {
2752− margin-top: 17rem; }
2753−
2754−.mb-17 {
2755− margin-bottom: 17rem; }
2756−
2757−.ml-17 {
2758− margin-left: 17rem; }
2759−
2760−.mr-17 {
2761− margin-right: 17rem; }
2762−
2763−.mv-17 {
2764− margin-top: 17rem;
2765− margin-bottom: 17rem; }
2766−
2767−.mh-17 {
2768− margin-left: 17rem;
2769− margin-right: 17rem; }
2770−
2771−.p-17 {
2772− padding: 17rem; }
2773−
2774−.pt-17 {
2775− padding-top: 17rem; }
2776−
2777−.pb-17 {
2778− padding-bottom: 17rem; }
2779−
2780−.pl-17 {
2781− padding-left: 17rem; }
2782−
2783−.pr-17 {
2784− padding-right: 17rem; }
2785−
2786−.pv-17 {
2787− padding-top: 17rem;
2788− padding-bottom: 17rem; }
2789−
2790−.ph-17 {
2791− padding-left: 17rem;
2792− padding-right: 17rem; }
2793−
2794−.w-18 {
2795− width: 18rem; }
2796−
2797−.h-18 {
2798− height: 18rem; }
2799−
2800−.m-18 {
2801− margin: 18rem; }
2802−
2803−.mt-18 {
2804− margin-top: 18rem; }
2805−
2806−.mb-18 {
2807− margin-bottom: 18rem; }
2808−
2809−.ml-18 {
2810− margin-left: 18rem; }
2811−
2812−.mr-18 {
2813− margin-right: 18rem; }
2814−
2815−.mv-18 {
2816− margin-top: 18rem;
2817− margin-bottom: 18rem; }
2818−
2819−.mh-18 {
2820− margin-left: 18rem;
2821− margin-right: 18rem; }
2822−
2823−.p-18 {
2824− padding: 18rem; }
2825−
2826−.pt-18 {
2827− padding-top: 18rem; }
2828−
2829−.pb-18 {
2830− padding-bottom: 18rem; }
2831−
2832−.pl-18 {
2833− padding-left: 18rem; }
2834−
2835−.pr-18 {
2836− padding-right: 18rem; }
2837−
2838−.pv-18 {
2839− padding-top: 18rem;
2840− padding-bottom: 18rem; }
2841−
2842−.ph-18 {
2843− padding-left: 18rem;
2844− padding-right: 18rem; }
2845−
2846−.w-19 {
2847− width: 19rem; }
2848−
2849−.h-19 {
2850− height: 19rem; }
2851−
2852−.m-19 {
2853− margin: 19rem; }
2854−
2855−.mt-19 {
2856− margin-top: 19rem; }
2857−
2858−.mb-19 {
2859− margin-bottom: 19rem; }
2860−
2861−.ml-19 {
2862− margin-left: 19rem; }
2863−
2864−.mr-19 {
2865− margin-right: 19rem; }
2866−
2867−.mv-19 {
2868− margin-top: 19rem;
2869− margin-bottom: 19rem; }
2870−
2871−.mh-19 {
2872− margin-left: 19rem;
2873− margin-right: 19rem; }
2874−
2875−.p-19 {
2876− padding: 19rem; }
2877−
2878−.pt-19 {
2879− padding-top: 19rem; }
2880−
2881−.pb-19 {
2882− padding-bottom: 19rem; }
2883−
2884−.pl-19 {
2885− padding-left: 19rem; }
2886−
2887−.pr-19 {
2888− padding-right: 19rem; }
2889−
2890−.pv-19 {
2891− padding-top: 19rem;
2892− padding-bottom: 19rem; }
2893−
2894−.ph-19 {
2895− padding-left: 19rem;
2896− padding-right: 19rem; }
2897−
2898−.w-20 {
2899− width: 20rem; }
2900−
2901−.h-20 {
2902− height: 20rem; }
2903−
2904−.m-20 {
2905− margin: 20rem; }
2906−
2907−.mt-20 {
2908− margin-top: 20rem; }
2909−
2910−.mb-20 {
2911− margin-bottom: 20rem; }
2912−
2913−.ml-20 {
2914− margin-left: 20rem; }
2915−
2916−.mr-20 {
2917− margin-right: 20rem; }
2918−
2919−.mv-20 {
2920− margin-top: 20rem;
2921− margin-bottom: 20rem; }
2922−
2923−.mh-20 {
2924− margin-left: 20rem;
2925− margin-right: 20rem; }
2926−
2927−.p-20 {
2928− padding: 20rem; }
2929−
2930−.pt-20 {
2931− padding-top: 20rem; }
2932−
2933−.pb-20 {
2934− padding-bottom: 20rem; }
2935−
2936−.pl-20 {
2937− padding-left: 20rem; }
2938−
2939−.pr-20 {
2940− padding-right: 20rem; }
2941−
2942−.pv-20 {
2943− padding-top: 20rem;
2944− padding-bottom: 20rem; }
2945−
2946−.ph-20 {
2947− padding-left: 20rem;
2948− padding-right: 20rem; }
2949−
2950−.w-21 {
2951− width: 21rem; }
2952−
2953−.h-21 {
2954− height: 21rem; }
2955−
2956−.m-21 {
2957− margin: 21rem; }
2958−
2959−.mt-21 {
2960− margin-top: 21rem; }
2961−
2962−.mb-21 {
2963− margin-bottom: 21rem; }
2964−
2965−.ml-21 {
2966− margin-left: 21rem; }
2967−
2968−.mr-21 {
2969− margin-right: 21rem; }
2970−
2971−.mv-21 {
2972− margin-top: 21rem;
2973− margin-bottom: 21rem; }
2974−
2975−.mh-21 {
2976− margin-left: 21rem;
2977− margin-right: 21rem; }
2978−
2979−.p-21 {
2980− padding: 21rem; }
2981−
2982−.pt-21 {
2983− padding-top: 21rem; }
2984−
2985−.pb-21 {
2986− padding-bottom: 21rem; }
2987−
2988−.pl-21 {
2989− padding-left: 21rem; }
2990−
2991−.pr-21 {
2992− padding-right: 21rem; }
2993−
2994−.pv-21 {
2995− padding-top: 21rem;
2996− padding-bottom: 21rem; }
2997−
2998−.ph-21 {
2999− padding-left: 21rem;
3000− padding-right: 21rem; }
3001−
3002−.w-22 {
3003− width: 22rem; }
3004−
3005−.h-22 {
3006− height: 22rem; }
3007−
3008−.m-22 {
3009− margin: 22rem; }
3010−
3011−.mt-22 {
3012− margin-top: 22rem; }
3013−
3014−.mb-22 {
3015− margin-bottom: 22rem; }
3016−
3017−.ml-22 {
3018− margin-left: 22rem; }
3019−
3020−.mr-22 {
3021− margin-right: 22rem; }
3022−
3023−.mv-22 {
3024− margin-top: 22rem;
3025− margin-bottom: 22rem; }
3026−
3027−.mh-22 {
3028− margin-left: 22rem;
3029− margin-right: 22rem; }
3030−
3031−.p-22 {
3032− padding: 22rem; }
3033−
3034−.pt-22 {
3035− padding-top: 22rem; }
3036−
3037−.pb-22 {
3038− padding-bottom: 22rem; }
3039−
3040−.pl-22 {
3041− padding-left: 22rem; }
3042−
3043−.pr-22 {
3044− padding-right: 22rem; }
3045−
3046−.pv-22 {
3047− padding-top: 22rem;
3048− padding-bottom: 22rem; }
3049−
3050−.ph-22 {
3051− padding-left: 22rem;
3052− padding-right: 22rem; }
3053−
3054−.w-23 {
3055− width: 23rem; }
3056−
3057−.h-23 {
3058− height: 23rem; }
3059−
3060−.m-23 {
3061− margin: 23rem; }
3062−
3063−.mt-23 {
3064− margin-top: 23rem; }
3065−
3066−.mb-23 {
3067− margin-bottom: 23rem; }
3068−
3069−.ml-23 {
3070− margin-left: 23rem; }
3071−
3072−.mr-23 {
3073− margin-right: 23rem; }
3074−
3075−.mv-23 {
3076− margin-top: 23rem;
3077− margin-bottom: 23rem; }
3078−
3079−.mh-23 {
3080− margin-left: 23rem;
3081− margin-right: 23rem; }
3082−
3083−.p-23 {
3084− padding: 23rem; }
3085−
3086−.pt-23 {
3087− padding-top: 23rem; }
3088−
3089−.pb-23 {
3090− padding-bottom: 23rem; }
3091−
3092−.pl-23 {
3093− padding-left: 23rem; }
3094−
3095−.pr-23 {
3096− padding-right: 23rem; }
3097−
3098−.pv-23 {
3099− padding-top: 23rem;
3100− padding-bottom: 23rem; }
3101−
3102−.ph-23 {
3103− padding-left: 23rem;
3104− padding-right: 23rem; }
3105−
3106−.w-24 {
3107− width: 24rem; }
3108−
3109−.h-24 {
3110− height: 24rem; }
3111−
3112−.m-24 {
3113− margin: 24rem; }
3114−
3115−.mt-24 {
3116− margin-top: 24rem; }
3117−
3118−.mb-24 {
3119− margin-bottom: 24rem; }
3120−
3121−.ml-24 {
3122− margin-left: 24rem; }
3123−
3124−.mr-24 {
3125− margin-right: 24rem; }
3126−
3127−.mv-24 {
3128− margin-top: 24rem;
3129− margin-bottom: 24rem; }
3130−
3131−.mh-24 {
3132− margin-left: 24rem;
3133− margin-right: 24rem; }
3134−
3135−.p-24 {
3136− padding: 24rem; }
3137−
3138−.pt-24 {
3139− padding-top: 24rem; }
3140−
3141−.pb-24 {
3142− padding-bottom: 24rem; }
3143−
3144−.pl-24 {
3145− padding-left: 24rem; }
3146−
3147−.pr-24 {
3148− padding-right: 24rem; }
3149−
3150−.pv-24 {
3151− padding-top: 24rem;
3152− padding-bottom: 24rem; }
3153−
3154−.ph-24 {
3155− padding-left: 24rem;
3156− padding-right: 24rem; }
3157−
3158−.w-25 {
3159− width: 25rem; }
3160−
3161−.h-25 {
3162− height: 25rem; }
3163−
3164−.m-25 {
3165− margin: 25rem; }
3166−
3167−.mt-25 {
3168− margin-top: 25rem; }
3169−
3170−.mb-25 {
3171− margin-bottom: 25rem; }
3172−
3173−.ml-25 {
3174− margin-left: 25rem; }
3175−
3176−.mr-25 {
3177− margin-right: 25rem; }
3178−
3179−.mv-25 {
3180− margin-top: 25rem;
3181− margin-bottom: 25rem; }
3182−
3183−.mh-25 {
3184− margin-left: 25rem;
3185− margin-right: 25rem; }
3186−
3187−.p-25 {
3188− padding: 25rem; }
3189−
3190−.pt-25 {
3191− padding-top: 25rem; }
3192−
3193−.pb-25 {
3194− padding-bottom: 25rem; }
3195−
3196−.pl-25 {
3197− padding-left: 25rem; }
3198−
3199−.pr-25 {
3200− padding-right: 25rem; }
3201−
3202−.pv-25 {
3203− padding-top: 25rem;
3204− padding-bottom: 25rem; }
3205−
3206−.ph-25 {
3207− padding-left: 25rem;
3208− padding-right: 25rem; }
3209−
3210−.w-26 {
3211− width: 26rem; }
3212−
3213−.h-26 {
3214− height: 26rem; }
3215−
3216−.m-26 {
3217− margin: 26rem; }
3218−
3219−.mt-26 {
3220− margin-top: 26rem; }
3221−
3222−.mb-26 {
3223− margin-bottom: 26rem; }
3224−
3225−.ml-26 {
3226− margin-left: 26rem; }
3227−
3228−.mr-26 {
3229− margin-right: 26rem; }
3230−
3231−.mv-26 {
3232− margin-top: 26rem;
3233− margin-bottom: 26rem; }
3234−
3235−.mh-26 {
3236− margin-left: 26rem;
3237− margin-right: 26rem; }
3238−
3239−.p-26 {
3240− padding: 26rem; }
3241−
3242−.pt-26 {
3243− padding-top: 26rem; }
3244−
3245−.pb-26 {
3246− padding-bottom: 26rem; }
3247−
3248−.pl-26 {
3249− padding-left: 26rem; }
3250−
3251−.pr-26 {
3252− padding-right: 26rem; }
3253−
3254−.pv-26 {
3255− padding-top: 26rem;
3256− padding-bottom: 26rem; }
3257−
3258−.ph-26 {
3259− padding-left: 26rem;
3260− padding-right: 26rem; }
3261−
3262−.w-27 {
3263− width: 27rem; }
3264−
3265−.h-27 {
3266− height: 27rem; }
3267−
3268−.m-27 {
3269− margin: 27rem; }
3270−
3271−.mt-27 {
3272− margin-top: 27rem; }
3273−
3274−.mb-27 {
3275− margin-bottom: 27rem; }
3276−
3277−.ml-27 {
3278− margin-left: 27rem; }
3279−
3280−.mr-27 {
3281− margin-right: 27rem; }
3282−
3283−.mv-27 {
3284− margin-top: 27rem;
3285− margin-bottom: 27rem; }
3286−
3287−.mh-27 {
3288− margin-left: 27rem;
3289− margin-right: 27rem; }
3290−
3291−.p-27 {
3292− padding: 27rem; }
3293−
3294−.pt-27 {
3295− padding-top: 27rem; }
3296−
3297−.pb-27 {
3298− padding-bottom: 27rem; }
3299−
3300−.pl-27 {
3301− padding-left: 27rem; }
3302−
3303−.pr-27 {
3304− padding-right: 27rem; }
3305−
3306−.pv-27 {
3307− padding-top: 27rem;
3308− padding-bottom: 27rem; }
3309−
3310−.ph-27 {
3311− padding-left: 27rem;
3312− padding-right: 27rem; }
3313−
3314−.w-28 {
3315− width: 28rem; }
3316−
3317−.h-28 {
3318− height: 28rem; }
3319−
3320−.m-28 {
3321− margin: 28rem; }
3322−
3323−.mt-28 {
3324− margin-top: 28rem; }
3325−
3326−.mb-28 {
3327− margin-bottom: 28rem; }
3328−
3329−.ml-28 {
3330− margin-left: 28rem; }
3331−
3332−.mr-28 {
3333− margin-right: 28rem; }
3334−
3335−.mv-28 {
3336− margin-top: 28rem;
3337− margin-bottom: 28rem; }
3338−
3339−.mh-28 {
3340− margin-left: 28rem;
3341− margin-right: 28rem; }
3342−
3343−.p-28 {
3344− padding: 28rem; }
3345−
3346−.pt-28 {
3347− padding-top: 28rem; }
3348−
3349−.pb-28 {
3350− padding-bottom: 28rem; }
3351−
3352−.pl-28 {
3353− padding-left: 28rem; }
3354−
3355−.pr-28 {
3356− padding-right: 28rem; }
3357−
3358−.pv-28 {
3359− padding-top: 28rem;
3360− padding-bottom: 28rem; }
3361−
3362−.ph-28 {
3363− padding-left: 28rem;
3364− padding-right: 28rem; }
3365−
3366−.w-29 {
3367− width: 29rem; }
3368−
3369−.h-29 {
3370− height: 29rem; }
3371−
3372−.m-29 {
3373− margin: 29rem; }
3374−
3375−.mt-29 {
3376− margin-top: 29rem; }
3377−
3378−.mb-29 {
3379− margin-bottom: 29rem; }
3380−
3381−.ml-29 {
3382− margin-left: 29rem; }
3383−
3384−.mr-29 {
3385− margin-right: 29rem; }
3386−
3387−.mv-29 {
3388− margin-top: 29rem;
3389− margin-bottom: 29rem; }
3390−
3391−.mh-29 {
3392− margin-left: 29rem;
3393− margin-right: 29rem; }
3394−
3395−.p-29 {
3396− padding: 29rem; }
3397−
3398−.pt-29 {
3399− padding-top: 29rem; }
3400−
3401−.pb-29 {
3402− padding-bottom: 29rem; }
3403−
3404−.pl-29 {
3405− padding-left: 29rem; }
3406−
3407−.pr-29 {
3408− padding-right: 29rem; }
3409−
3410−.pv-29 {
3411− padding-top: 29rem;
3412− padding-bottom: 29rem; }
3413−
3414−.ph-29 {
3415− padding-left: 29rem;
3416− padding-right: 29rem; }
3417−
3418−.w-30 {
3419− width: 30rem; }
3420−
3421−.h-30 {
3422− height: 30rem; }
3423−
3424−.m-30 {
3425− margin: 30rem; }
3426−
3427−.mt-30 {
3428− margin-top: 30rem; }
3429−
3430−.mb-30 {
3431− margin-bottom: 30rem; }
3432−
3433−.ml-30 {
3434− margin-left: 30rem; }
3435−
3436−.mr-30 {
3437− margin-right: 30rem; }
3438−
3439−.mv-30 {
3440− margin-top: 30rem;
3441− margin-bottom: 30rem; }
3442−
3443−.mh-30 {
3444− margin-left: 30rem;
3445− margin-right: 30rem; }
3446−
3447−.p-30 {
3448− padding: 30rem; }
3449−
3450−.pt-30 {
3451− padding-top: 30rem; }
3452−
3453−.pb-30 {
3454− padding-bottom: 30rem; }
3455−
3456−.pl-30 {
3457− padding-left: 30rem; }
3458−
3459−.pr-30 {
3460− padding-right: 30rem; }
3461−
3462−.pv-30 {
3463− padding-top: 30rem;
3464− padding-bottom: 30rem; }
3465−
3466−.ph-30 {
3467− padding-left: 30rem;
3468− padding-right: 30rem; }
3469−
3470−.w-31 {
3471− width: 31rem; }
3472−
3473−.h-31 {
3474− height: 31rem; }
3475−
3476−.m-31 {
3477− margin: 31rem; }
3478−
3479−.mt-31 {
3480− margin-top: 31rem; }
3481−
3482−.mb-31 {
3483− margin-bottom: 31rem; }
3484−
3485−.ml-31 {
3486− margin-left: 31rem; }
3487−
3488−.mr-31 {
3489− margin-right: 31rem; }
3490−
3491−.mv-31 {
3492− margin-top: 31rem;
3493− margin-bottom: 31rem; }
3494−
3495−.mh-31 {
3496− margin-left: 31rem;
3497− margin-right: 31rem; }
3498−
3499−.p-31 {
3500− padding: 31rem; }
3501−
3502−.pt-31 {
3503− padding-top: 31rem; }
3504−
3505−.pb-31 {
3506− padding-bottom: 31rem; }
3507−
3508−.pl-31 {
3509− padding-left: 31rem; }
3510−
3511−.pr-31 {
3512− padding-right: 31rem; }
3513−
3514−.pv-31 {
3515− padding-top: 31rem;
3516− padding-bottom: 31rem; }
3517−
3518−.ph-31 {
3519− padding-left: 31rem;
3520− padding-right: 31rem; }
3521−
3522−.w-32 {
3523− width: 32rem; }
3524−
3525−.h-32 {
3526− height: 32rem; }
3527−
3528−.m-32 {
3529− margin: 32rem; }
3530−
3531−.mt-32 {
3532− margin-top: 32rem; }
3533−
3534−.mb-32 {
3535− margin-bottom: 32rem; }
3536−
3537−.ml-32 {
3538− margin-left: 32rem; }
3539−
3540−.mr-32 {
3541− margin-right: 32rem; }
3542−
3543−.mv-32 {
3544− margin-top: 32rem;
3545− margin-bottom: 32rem; }
3546−
3547−.mh-32 {
3548− margin-left: 32rem;
3549− margin-right: 32rem; }
3550−
3551−.p-32 {
3552− padding: 32rem; }
3553−
3554−.pt-32 {
3555− padding-top: 32rem; }
3556−
3557−.pb-32 {
3558− padding-bottom: 32rem; }
3559−
3560−.pl-32 {
3561− padding-left: 32rem; }
3562−
3563−.pr-32 {
3564− padding-right: 32rem; }
3565−
3566−.pv-32 {
3567− padding-top: 32rem;
3568− padding-bottom: 32rem; }
3569−
3570−.ph-32 {
3571− padding-left: 32rem;
3572− padding-right: 32rem; }
3573−
3574−.w-33 {
3575− width: 33rem; }
3576−
3577−.h-33 {
3578− height: 33rem; }
3579−
3580−.m-33 {
3581− margin: 33rem; }
3582−
3583−.mt-33 {
3584− margin-top: 33rem; }
3585−
3586−.mb-33 {
3587− margin-bottom: 33rem; }
3588−
3589−.ml-33 {
3590− margin-left: 33rem; }
3591−
3592−.mr-33 {
3593− margin-right: 33rem; }
3594−
3595−.mv-33 {
3596− margin-top: 33rem;
3597− margin-bottom: 33rem; }
3598−
3599−.mh-33 {
3600− margin-left: 33rem;
3601− margin-right: 33rem; }
3602−
3603−.p-33 {
3604− padding: 33rem; }
3605−
3606−.pt-33 {
3607− padding-top: 33rem; }
3608−
3609−.pb-33 {
3610− padding-bottom: 33rem; }
3611−
3612−.pl-33 {
3613− padding-left: 33rem; }
3614−
3615−.pr-33 {
3616− padding-right: 33rem; }
3617−
3618−.pv-33 {
3619− padding-top: 33rem;
3620− padding-bottom: 33rem; }
3621−
3622−.ph-33 {
3623− padding-left: 33rem;
3624− padding-right: 33rem; }
3625−
3626−.w-34 {
3627− width: 34rem; }
3628−
3629−.h-34 {
3630− height: 34rem; }
3631−
3632−.m-34 {
3633− margin: 34rem; }
3634−
3635−.mt-34 {
3636− margin-top: 34rem; }
3637−
3638−.mb-34 {
3639− margin-bottom: 34rem; }
3640−
3641−.ml-34 {
3642− margin-left: 34rem; }
3643−
3644−.mr-34 {
3645− margin-right: 34rem; }
3646−
3647−.mv-34 {
3648− margin-top: 34rem;
3649− margin-bottom: 34rem; }
3650−
3651−.mh-34 {
3652− margin-left: 34rem;
3653− margin-right: 34rem; }
3654−
3655−.p-34 {
3656− padding: 34rem; }
3657−
3658−.pt-34 {
3659− padding-top: 34rem; }
3660−
3661−.pb-34 {
3662− padding-bottom: 34rem; }
3663−
3664−.pl-34 {
3665− padding-left: 34rem; }
3666−
3667−.pr-34 {
3668− padding-right: 34rem; }
3669−
3670−.pv-34 {
3671− padding-top: 34rem;
3672− padding-bottom: 34rem; }
3673−
3674−.ph-34 {
3675− padding-left: 34rem;
3676− padding-right: 34rem; }
3677−
3678−.w-35 {
3679− width: 35rem; }
3680−
3681−.h-35 {
3682− height: 35rem; }
3683−
3684−.m-35 {
3685− margin: 35rem; }
3686−
3687−.mt-35 {
3688− margin-top: 35rem; }
3689−
3690−.mb-35 {
3691− margin-bottom: 35rem; }
3692−
3693−.ml-35 {
3694− margin-left: 35rem; }
3695−
3696−.mr-35 {
3697− margin-right: 35rem; }
3698−
3699−.mv-35 {
3700− margin-top: 35rem;
3701− margin-bottom: 35rem; }
3702−
3703−.mh-35 {
3704− margin-left: 35rem;
3705− margin-right: 35rem; }
3706−
3707−.p-35 {
3708− padding: 35rem; }
3709−
3710−.pt-35 {
3711− padding-top: 35rem; }
3712−
3713−.pb-35 {
3714− padding-bottom: 35rem; }
3715−
3716−.pl-35 {
3717− padding-left: 35rem; }
3718−
3719−.pr-35 {
3720− padding-right: 35rem; }
3721−
3722−.pv-35 {
3723− padding-top: 35rem;
3724− padding-bottom: 35rem; }
3725−
3726−.ph-35 {
3727− padding-left: 35rem;
3728− padding-right: 35rem; }
3729−
3730−.w-36 {
3731− width: 36rem; }
3732−
3733−.h-36 {
3734− height: 36rem; }
3735−
3736−.m-36 {
3737− margin: 36rem; }
3738−
3739−.mt-36 {
3740− margin-top: 36rem; }
3741−
3742−.mb-36 {
3743− margin-bottom: 36rem; }
3744−
3745−.ml-36 {
3746− margin-left: 36rem; }
3747−
3748−.mr-36 {
3749− margin-right: 36rem; }
3750−
3751−.mv-36 {
3752− margin-top: 36rem;
3753− margin-bottom: 36rem; }
3754−
3755−.mh-36 {
3756− margin-left: 36rem;
3757− margin-right: 36rem; }
3758−
3759−.p-36 {
3760− padding: 36rem; }
3761−
3762−.pt-36 {
3763− padding-top: 36rem; }
3764−
3765−.pb-36 {
3766− padding-bottom: 36rem; }
3767−
3768−.pl-36 {
3769− padding-left: 36rem; }
3770−
3771−.pr-36 {
3772− padding-right: 36rem; }
3773−
3774−.pv-36 {
3775− padding-top: 36rem;
3776− padding-bottom: 36rem; }
3777−
3778−.ph-36 {
3779− padding-left: 36rem;
3780− padding-right: 36rem; }
3781−
3782−.w-37 {
3783− width: 37rem; }
3784−
3785−.h-37 {
3786− height: 37rem; }
3787−
3788−.m-37 {
3789− margin: 37rem; }
3790−
3791−.mt-37 {
3792− margin-top: 37rem; }
3793−
3794−.mb-37 {
3795− margin-bottom: 37rem; }
3796−
3797−.ml-37 {
3798− margin-left: 37rem; }
3799−
3800−.mr-37 {
3801− margin-right: 37rem; }
3802−
3803−.mv-37 {
3804− margin-top: 37rem;
3805− margin-bottom: 37rem; }
3806−
3807−.mh-37 {
3808− margin-left: 37rem;
3809− margin-right: 37rem; }
3810−
3811−.p-37 {
3812− padding: 37rem; }
3813−
3814−.pt-37 {
3815− padding-top: 37rem; }
3816−
3817−.pb-37 {
3818− padding-bottom: 37rem; }
3819−
3820−.pl-37 {
3821− padding-left: 37rem; }
3822−
3823−.pr-37 {
3824− padding-right: 37rem; }
3825−
3826−.pv-37 {
3827− padding-top: 37rem;
3828− padding-bottom: 37rem; }
3829−
3830−.ph-37 {
3831− padding-left: 37rem;
3832− padding-right: 37rem; }
3833−
3834−.w-38 {
3835− width: 38rem; }
3836−
3837−.h-38 {
3838− height: 38rem; }
3839−
3840−.m-38 {
3841− margin: 38rem; }
3842−
3843−.mt-38 {
3844− margin-top: 38rem; }
3845−
3846−.mb-38 {
3847− margin-bottom: 38rem; }
3848−
3849−.ml-38 {
3850− margin-left: 38rem; }
3851−
3852−.mr-38 {
3853− margin-right: 38rem; }
3854−
3855−.mv-38 {
3856− margin-top: 38rem;
3857− margin-bottom: 38rem; }
3858−
3859−.mh-38 {
3860− margin-left: 38rem;
3861− margin-right: 38rem; }
3862−
3863−.p-38 {
3864− padding: 38rem; }
3865−
3866−.pt-38 {
3867− padding-top: 38rem; }
3868−
3869−.pb-38 {
3870− padding-bottom: 38rem; }
3871−
3872−.pl-38 {
3873− padding-left: 38rem; }
3874−
3875−.pr-38 {
3876− padding-right: 38rem; }
3877−
3878−.pv-38 {
3879− padding-top: 38rem;
3880− padding-bottom: 38rem; }
3881−
3882−.ph-38 {
3883− padding-left: 38rem;
3884− padding-right: 38rem; }
3885−
3886−.w-39 {
3887− width: 39rem; }
3888−
3889−.h-39 {
3890− height: 39rem; }
3891−
3892−.m-39 {
3893− margin: 39rem; }
3894−
3895−.mt-39 {
3896− margin-top: 39rem; }
3897−
3898−.mb-39 {
3899− margin-bottom: 39rem; }
3900−
3901−.ml-39 {
3902− margin-left: 39rem; }
3903−
3904−.mr-39 {
3905− margin-right: 39rem; }
3906−
3907−.mv-39 {
3908− margin-top: 39rem;
3909− margin-bottom: 39rem; }
3910−
3911−.mh-39 {
3912− margin-left: 39rem;
3913− margin-right: 39rem; }
3914−
3915−.p-39 {
3916− padding: 39rem; }
3917−
3918−.pt-39 {
3919− padding-top: 39rem; }
3920−
3921−.pb-39 {
3922− padding-bottom: 39rem; }
3923−
3924−.pl-39 {
3925− padding-left: 39rem; }
3926−
3927−.pr-39 {
3928− padding-right: 39rem; }
3929−
3930−.pv-39 {
3931− padding-top: 39rem;
3932− padding-bottom: 39rem; }
3933−
3934−.ph-39 {
3935− padding-left: 39rem;
3936− padding-right: 39rem; }
3937−
3938−.w-40 {
3939− width: 40rem; }
3940−
3941−.h-40 {
3942− height: 40rem; }
3943−
3944−.m-40 {
3945− margin: 40rem; }
3946−
3947−.mt-40 {
3948− margin-top: 40rem; }
3949−
3950−.mb-40 {
3951− margin-bottom: 40rem; }
3952−
3953−.ml-40 {
3954− margin-left: 40rem; }
3955−
3956−.mr-40 {
3957− margin-right: 40rem; }
3958−
3959−.mv-40 {
3960− margin-top: 40rem;
3961− margin-bottom: 40rem; }
3962−
3963−.mh-40 {
3964− margin-left: 40rem;
3965− margin-right: 40rem; }
3966−
3967−.p-40 {
3968− padding: 40rem; }
3969−
3970−.pt-40 {
3971− padding-top: 40rem; }
3972−
3973−.pb-40 {
3974− padding-bottom: 40rem; }
3975−
3976−.pl-40 {
3977− padding-left: 40rem; }
3978−
3979−.pr-40 {
3980− padding-right: 40rem; }
3981−
3982−.pv-40 {
3983− padding-top: 40rem;
3984− padding-bottom: 40rem; }
3985−
3986−.ph-40 {
3987− padding-left: 40rem;
3988− padding-right: 40rem; }
3989−
3990−.w-41 {
3991− width: 41rem; }
3992−
3993−.h-41 {
3994− height: 41rem; }
3995−
3996−.m-41 {
3997− margin: 41rem; }
3998−
3999−.mt-41 {
4000− margin-top: 41rem; }
4001−
4002−.mb-41 {
4003− margin-bottom: 41rem; }
4004−
4005−.ml-41 {
4006− margin-left: 41rem; }
4007−
4008−.mr-41 {
4009− margin-right: 41rem; }
4010−
4011−.mv-41 {
4012− margin-top: 41rem;
4013− margin-bottom: 41rem; }
4014−
4015−.mh-41 {
4016− margin-left: 41rem;
4017− margin-right: 41rem; }
4018−
4019−.p-41 {
4020− padding: 41rem; }
4021−
4022−.pt-41 {
4023− padding-top: 41rem; }
4024−
4025−.pb-41 {
4026− padding-bottom: 41rem; }
4027−
4028−.pl-41 {
4029− padding-left: 41rem; }
4030−
4031−.pr-41 {
4032− padding-right: 41rem; }
4033−
4034−.pv-41 {
4035− padding-top: 41rem;
4036− padding-bottom: 41rem; }
4037−
4038−.ph-41 {
4039− padding-left: 41rem;
4040− padding-right: 41rem; }
4041−
4042−.w-42 {
4043− width: 42rem; }
4044−
4045−.h-42 {
4046− height: 42rem; }
4047−
4048−.m-42 {
4049− margin: 42rem; }
4050−
4051−.mt-42 {
4052− margin-top: 42rem; }
4053−
4054−.mb-42 {
4055− margin-bottom: 42rem; }
4056−
4057−.ml-42 {
4058− margin-left: 42rem; }
4059−
4060−.mr-42 {
4061− margin-right: 42rem; }
4062−
4063−.mv-42 {
4064− margin-top: 42rem;
4065− margin-bottom: 42rem; }
4066−
4067−.mh-42 {
4068− margin-left: 42rem;
4069− margin-right: 42rem; }
4070−
4071−.p-42 {
4072− padding: 42rem; }
4073−
4074−.pt-42 {
4075− padding-top: 42rem; }
4076−
4077−.pb-42 {
4078− padding-bottom: 42rem; }
4079−
4080−.pl-42 {
4081− padding-left: 42rem; }
4082−
4083−.pr-42 {
4084− padding-right: 42rem; }
4085−
4086−.pv-42 {
4087− padding-top: 42rem;
4088− padding-bottom: 42rem; }
4089−
4090−.ph-42 {
4091− padding-left: 42rem;
4092− padding-right: 42rem; }
4093−
4094−.w-43 {
4095− width: 43rem; }
4096−
4097−.h-43 {
4098− height: 43rem; }
4099−
4100−.m-43 {
4101− margin: 43rem; }
4102−
4103−.mt-43 {
4104− margin-top: 43rem; }
4105−
4106−.mb-43 {
4107− margin-bottom: 43rem; }
4108−
4109−.ml-43 {
4110− margin-left: 43rem; }
4111−
4112−.mr-43 {
4113− margin-right: 43rem; }
4114−
4115−.mv-43 {
4116− margin-top: 43rem;
4117− margin-bottom: 43rem; }
4118−
4119−.mh-43 {
4120− margin-left: 43rem;
4121− margin-right: 43rem; }
4122−
4123−.p-43 {
4124− padding: 43rem; }
4125−
4126−.pt-43 {
4127− padding-top: 43rem; }
4128−
4129−.pb-43 {
4130− padding-bottom: 43rem; }
4131−
4132−.pl-43 {
4133− padding-left: 43rem; }
4134−
4135−.pr-43 {
4136− padding-right: 43rem; }
4137−
4138−.pv-43 {
4139− padding-top: 43rem;
4140− padding-bottom: 43rem; }
4141−
4142−.ph-43 {
4143− padding-left: 43rem;
4144− padding-right: 43rem; }
4145−
4146−.w-44 {
4147− width: 44rem; }
4148−
4149−.h-44 {
4150− height: 44rem; }
4151−
4152−.m-44 {
4153− margin: 44rem; }
4154−
4155−.mt-44 {
4156− margin-top: 44rem; }
4157−
4158−.mb-44 {
4159− margin-bottom: 44rem; }
4160−
4161−.ml-44 {
4162− margin-left: 44rem; }
4163−
4164−.mr-44 {
4165− margin-right: 44rem; }
4166−
4167−.mv-44 {
4168− margin-top: 44rem;
4169− margin-bottom: 44rem; }
4170−
4171−.mh-44 {
4172− margin-left: 44rem;
4173− margin-right: 44rem; }
4174−
4175−.p-44 {
4176− padding: 44rem; }
4177−
4178−.pt-44 {
4179− padding-top: 44rem; }
4180−
4181−.pb-44 {
4182− padding-bottom: 44rem; }
4183−
4184−.pl-44 {
4185− padding-left: 44rem; }
4186−
4187−.pr-44 {
4188− padding-right: 44rem; }
4189−
4190−.pv-44 {
4191− padding-top: 44rem;
4192− padding-bottom: 44rem; }
4193−
4194−.ph-44 {
4195− padding-left: 44rem;
4196− padding-right: 44rem; }
4197−
4198−.w-45 {
4199− width: 45rem; }
4200−
4201−.h-45 {
4202− height: 45rem; }
4203−
4204−.m-45 {
4205− margin: 45rem; }
4206−
4207−.mt-45 {
4208− margin-top: 45rem; }
4209−
4210−.mb-45 {
4211− margin-bottom: 45rem; }
4212−
4213−.ml-45 {
4214− margin-left: 45rem; }
4215−
4216−.mr-45 {
4217− margin-right: 45rem; }
4218−
4219−.mv-45 {
4220− margin-top: 45rem;
4221− margin-bottom: 45rem; }
4222−
4223−.mh-45 {
4224− margin-left: 45rem;
4225− margin-right: 45rem; }
4226−
4227−.p-45 {
4228− padding: 45rem; }
4229−
4230−.pt-45 {
4231− padding-top: 45rem; }
4232−
4233−.pb-45 {
4234− padding-bottom: 45rem; }
4235−
4236−.pl-45 {
4237− padding-left: 45rem; }
4238−
4239−.pr-45 {
4240− padding-right: 45rem; }
4241−
4242−.pv-45 {
4243− padding-top: 45rem;
4244− padding-bottom: 45rem; }
4245−
4246−.ph-45 {
4247− padding-left: 45rem;
4248− padding-right: 45rem; }
4249−
4250−.w-46 {
4251− width: 46rem; }
4252−
4253−.h-46 {
4254− height: 46rem; }
4255−
4256−.m-46 {
4257− margin: 46rem; }
4258−
4259−.mt-46 {
4260− margin-top: 46rem; }
4261−
4262−.mb-46 {
4263− margin-bottom: 46rem; }
4264−
4265−.ml-46 {
4266− margin-left: 46rem; }
4267−
4268−.mr-46 {
4269− margin-right: 46rem; }
4270−
4271−.mv-46 {
4272− margin-top: 46rem;
4273− margin-bottom: 46rem; }
4274−
4275−.mh-46 {
4276− margin-left: 46rem;
4277− margin-right: 46rem; }
4278−
4279−.p-46 {
4280− padding: 46rem; }
4281−
4282−.pt-46 {
4283− padding-top: 46rem; }
4284−
4285−.pb-46 {
4286− padding-bottom: 46rem; }
4287−
4288−.pl-46 {
4289− padding-left: 46rem; }
4290−
4291−.pr-46 {
4292− padding-right: 46rem; }
4293−
4294−.pv-46 {
4295− padding-top: 46rem;
4296− padding-bottom: 46rem; }
4297−
4298−.ph-46 {
4299− padding-left: 46rem;
4300− padding-right: 46rem; }
4301−
4302−.w-47 {
4303− width: 47rem; }
4304−
4305−.h-47 {
4306− height: 47rem; }
4307−
4308−.m-47 {
4309− margin: 47rem; }
4310−
4311−.mt-47 {
4312− margin-top: 47rem; }
4313−
4314−.mb-47 {
4315− margin-bottom: 47rem; }
4316−
4317−.ml-47 {
4318− margin-left: 47rem; }
4319−
4320−.mr-47 {
4321− margin-right: 47rem; }
4322−
4323−.mv-47 {
4324− margin-top: 47rem;
4325− margin-bottom: 47rem; }
4326−
4327−.mh-47 {
4328− margin-left: 47rem;
4329− margin-right: 47rem; }
4330−
4331−.p-47 {
4332− padding: 47rem; }
4333−
4334−.pt-47 {
4335− padding-top: 47rem; }
4336−
4337−.pb-47 {
4338− padding-bottom: 47rem; }
4339−
4340−.pl-47 {
4341− padding-left: 47rem; }
4342−
4343−.pr-47 {
4344− padding-right: 47rem; }
4345−
4346−.pv-47 {
4347− padding-top: 47rem;
4348− padding-bottom: 47rem; }
4349−
4350−.ph-47 {
4351− padding-left: 47rem;
4352− padding-right: 47rem; }
4353−
4354−.w-48 {
4355− width: 48rem; }
4356−
4357−.h-48 {
4358− height: 48rem; }
4359−
4360−.m-48 {
4361− margin: 48rem; }
4362−
4363−.mt-48 {
4364− margin-top: 48rem; }
4365−
4366−.mb-48 {
4367− margin-bottom: 48rem; }
4368−
4369−.ml-48 {
4370− margin-left: 48rem; }
4371−
4372−.mr-48 {
4373− margin-right: 48rem; }
4374−
4375−.mv-48 {
4376− margin-top: 48rem;
4377− margin-bottom: 48rem; }
4378−
4379−.mh-48 {
4380− margin-left: 48rem;
4381− margin-right: 48rem; }
4382−
4383−.p-48 {
4384− padding: 48rem; }
4385−
4386−.pt-48 {
4387− padding-top: 48rem; }
4388−
4389−.pb-48 {
4390− padding-bottom: 48rem; }
4391−
4392−.pl-48 {
4393− padding-left: 48rem; }
4394−
4395−.pr-48 {
4396− padding-right: 48rem; }
4397−
4398−.pv-48 {
4399− padding-top: 48rem;
4400− padding-bottom: 48rem; }
4401−
4402−.ph-48 {
4403− padding-left: 48rem;
4404− padding-right: 48rem; }
4405−
4406−.w-49 {
4407− width: 49rem; }
4408−
4409−.h-49 {
4410− height: 49rem; }
4411−
4412−.m-49 {
4413− margin: 49rem; }
4414−
4415−.mt-49 {
4416− margin-top: 49rem; }
4417−
4418−.mb-49 {
4419− margin-bottom: 49rem; }
4420−
4421−.ml-49 {
4422− margin-left: 49rem; }
4423−
4424−.mr-49 {
4425− margin-right: 49rem; }
4426−
4427−.mv-49 {
4428− margin-top: 49rem;
4429− margin-bottom: 49rem; }
4430−
4431−.mh-49 {
4432− margin-left: 49rem;
4433− margin-right: 49rem; }
4434−
4435−.p-49 {
4436− padding: 49rem; }
4437−
4438−.pt-49 {
4439− padding-top: 49rem; }
4440−
4441−.pb-49 {
4442− padding-bottom: 49rem; }
4443−
4444−.pl-49 {
4445− padding-left: 49rem; }
4446−
4447−.pr-49 {
4448− padding-right: 49rem; }
4449−
4450−.pv-49 {
4451− padding-top: 49rem;
4452− padding-bottom: 49rem; }
4453−
4454−.ph-49 {
4455− padding-left: 49rem;
4456− padding-right: 49rem; }
4457−
4458−.w-50 {
4459− width: 50rem; }
4460−
4461−.h-50 {
4462− height: 50rem; }
4463−
4464−.m-50 {
4465− margin: 50rem; }
4466−
4467−.mt-50 {
4468− margin-top: 50rem; }
4469−
4470−.mb-50 {
4471− margin-bottom: 50rem; }
4472−
4473−.ml-50 {
4474− margin-left: 50rem; }
4475−
4476−.mr-50 {
4477− margin-right: 50rem; }
4478−
4479−.mv-50 {
4480− margin-top: 50rem;
4481− margin-bottom: 50rem; }
4482−
4483−.mh-50 {
4484− margin-left: 50rem;
4485− margin-right: 50rem; }
4486−
4487−.p-50 {
4488− padding: 50rem; }
4489−
4490−.pt-50 {
4491− padding-top: 50rem; }
4492−
4493−.pb-50 {
4494− padding-bottom: 50rem; }
4495−
4496−.pl-50 {
4497− padding-left: 50rem; }
4498−
4499−.pr-50 {
4500− padding-right: 50rem; }
4501−
4502−.pv-50 {
4503− padding-top: 50rem;
4504− padding-bottom: 50rem; }
4505−
4506−.ph-50 {
4507− padding-left: 50rem;
4508− padding-right: 50rem; }
4509−
4510−.w-51 {
4511− width: 51rem; }
4512−
4513−.h-51 {
4514− height: 51rem; }
4515−
4516−.m-51 {
4517− margin: 51rem; }
4518−
4519−.mt-51 {
4520− margin-top: 51rem; }
4521−
4522−.mb-51 {
4523− margin-bottom: 51rem; }
4524−
4525−.ml-51 {
4526− margin-left: 51rem; }
4527−
4528−.mr-51 {
4529− margin-right: 51rem; }
4530−
4531−.mv-51 {
4532− margin-top: 51rem;
4533− margin-bottom: 51rem; }
4534−
4535−.mh-51 {
4536− margin-left: 51rem;
4537− margin-right: 51rem; }
4538−
4539−.p-51 {
4540− padding: 51rem; }
4541−
4542−.pt-51 {
4543− padding-top: 51rem; }
4544−
4545−.pb-51 {
4546− padding-bottom: 51rem; }
4547−
4548−.pl-51 {
4549− padding-left: 51rem; }
4550−
4551−.pr-51 {
4552− padding-right: 51rem; }
4553−
4554−.pv-51 {
4555− padding-top: 51rem;
4556− padding-bottom: 51rem; }
4557−
4558−.ph-51 {
4559− padding-left: 51rem;
4560− padding-right: 51rem; }
4561−
4562−.w-52 {
4563− width: 52rem; }
4564−
4565−.h-52 {
4566− height: 52rem; }
4567−
4568−.m-52 {
4569− margin: 52rem; }
4570−
4571−.mt-52 {
4572− margin-top: 52rem; }
4573−
4574−.mb-52 {
4575− margin-bottom: 52rem; }
4576−
4577−.ml-52 {
4578− margin-left: 52rem; }
4579−
4580−.mr-52 {
4581− margin-right: 52rem; }
4582−
4583−.mv-52 {
4584− margin-top: 52rem;
4585− margin-bottom: 52rem; }
4586−
4587−.mh-52 {
4588− margin-left: 52rem;
4589− margin-right: 52rem; }
4590−
4591−.p-52 {
4592− padding: 52rem; }
4593−
4594−.pt-52 {
4595− padding-top: 52rem; }
4596−
4597−.pb-52 {
4598− padding-bottom: 52rem; }
4599−
4600−.pl-52 {
4601− padding-left: 52rem; }
4602−
4603−.pr-52 {
4604− padding-right: 52rem; }
4605−
4606−.pv-52 {
4607− padding-top: 52rem;
4608− padding-bottom: 52rem; }
4609−
4610−.ph-52 {
4611− padding-left: 52rem;
4612− padding-right: 52rem; }
4613−
4614−.w-53 {
4615− width: 53rem; }
4616−
4617−.h-53 {
4618− height: 53rem; }
4619−
4620−.m-53 {
4621− margin: 53rem; }
4622−
4623−.mt-53 {
4624− margin-top: 53rem; }
4625−
4626−.mb-53 {
4627− margin-bottom: 53rem; }
4628−
4629−.ml-53 {
4630− margin-left: 53rem; }
4631−
4632−.mr-53 {
4633− margin-right: 53rem; }
4634−
4635−.mv-53 {
4636− margin-top: 53rem;
4637− margin-bottom: 53rem; }
4638−
4639−.mh-53 {
4640− margin-left: 53rem;
4641− margin-right: 53rem; }
4642−
4643−.p-53 {
4644− padding: 53rem; }
4645−
4646−.pt-53 {
4647− padding-top: 53rem; }
4648−
4649−.pb-53 {
4650− padding-bottom: 53rem; }
4651−
4652−.pl-53 {
4653− padding-left: 53rem; }
4654−
4655−.pr-53 {
4656− padding-right: 53rem; }
4657−
4658−.pv-53 {
4659− padding-top: 53rem;
4660− padding-bottom: 53rem; }
4661−
4662−.ph-53 {
4663− padding-left: 53rem;
4664− padding-right: 53rem; }
4665−
4666−.w-54 {
4667− width: 54rem; }
4668−
4669−.h-54 {
4670− height: 54rem; }
4671−
4672−.m-54 {
4673− margin: 54rem; }
4674−
4675−.mt-54 {
4676− margin-top: 54rem; }
4677−
4678−.mb-54 {
4679− margin-bottom: 54rem; }
4680−
4681−.ml-54 {
4682− margin-left: 54rem; }
4683−
4684−.mr-54 {
4685− margin-right: 54rem; }
4686−
4687−.mv-54 {
4688− margin-top: 54rem;
4689− margin-bottom: 54rem; }
4690−
4691−.mh-54 {
4692− margin-left: 54rem;
4693− margin-right: 54rem; }
4694−
4695−.p-54 {
4696− padding: 54rem; }
4697−
4698−.pt-54 {
4699− padding-top: 54rem; }
4700−
4701−.pb-54 {
4702− padding-bottom: 54rem; }
4703−
4704−.pl-54 {
4705− padding-left: 54rem; }
4706−
4707−.pr-54 {
4708− padding-right: 54rem; }
4709−
4710−.pv-54 {
4711− padding-top: 54rem;
4712− padding-bottom: 54rem; }
4713−
4714−.ph-54 {
4715− padding-left: 54rem;
4716− padding-right: 54rem; }
4717−
4718−.w-55 {
4719− width: 55rem; }
4720−
4721−.h-55 {
4722− height: 55rem; }
4723−
4724−.m-55 {
4725− margin: 55rem; }
4726−
4727−.mt-55 {
4728− margin-top: 55rem; }
4729−
4730−.mb-55 {
4731− margin-bottom: 55rem; }
4732−
4733−.ml-55 {
4734− margin-left: 55rem; }
4735−
4736−.mr-55 {
4737− margin-right: 55rem; }
4738−
4739−.mv-55 {
4740− margin-top: 55rem;
4741− margin-bottom: 55rem; }
4742−
4743−.mh-55 {
4744− margin-left: 55rem;
4745− margin-right: 55rem; }
4746−
4747−.p-55 {
4748− padding: 55rem; }
4749−
4750−.pt-55 {
4751− padding-top: 55rem; }
4752−
4753−.pb-55 {
4754− padding-bottom: 55rem; }
4755−
4756−.pl-55 {
4757− padding-left: 55rem; }
4758−
4759−.pr-55 {
4760− padding-right: 55rem; }
4761−
4762−.pv-55 {
4763− padding-top: 55rem;
4764− padding-bottom: 55rem; }
4765−
4766−.ph-55 {
4767− padding-left: 55rem;
4768− padding-right: 55rem; }
4769−
4770−.w-56 {
4771− width: 56rem; }
4772−
4773−.h-56 {
4774− height: 56rem; }
4775−
4776−.m-56 {
4777− margin: 56rem; }
4778−
4779−.mt-56 {
4780− margin-top: 56rem; }
4781−
4782−.mb-56 {
4783− margin-bottom: 56rem; }
4784−
4785−.ml-56 {
4786− margin-left: 56rem; }
4787−
4788−.mr-56 {
4789− margin-right: 56rem; }
4790−
4791−.mv-56 {
4792− margin-top: 56rem;
4793− margin-bottom: 56rem; }
4794−
4795−.mh-56 {
4796− margin-left: 56rem;
4797− margin-right: 56rem; }
4798−
4799−.p-56 {
4800− padding: 56rem; }
4801−
4802−.pt-56 {
4803− padding-top: 56rem; }
4804−
4805−.pb-56 {
4806− padding-bottom: 56rem; }
4807−
4808−.pl-56 {
4809− padding-left: 56rem; }
4810−
4811−.pr-56 {
4812− padding-right: 56rem; }
4813−
4814−.pv-56 {
4815− padding-top: 56rem;
4816− padding-bottom: 56rem; }
4817−
4818−.ph-56 {
4819− padding-left: 56rem;
4820− padding-right: 56rem; }
4821−
4822−.w-57 {
4823− width: 57rem; }
4824−
4825−.h-57 {
4826− height: 57rem; }
4827−
4828−.m-57 {
4829− margin: 57rem; }
4830−
4831−.mt-57 {
4832− margin-top: 57rem; }
4833−
4834−.mb-57 {
4835− margin-bottom: 57rem; }
4836−
4837−.ml-57 {
4838− margin-left: 57rem; }
4839−
4840−.mr-57 {
4841− margin-right: 57rem; }
4842−
4843−.mv-57 {
4844− margin-top: 57rem;
4845− margin-bottom: 57rem; }
4846−
4847−.mh-57 {
4848− margin-left: 57rem;
4849− margin-right: 57rem; }
4850−
4851−.p-57 {
4852− padding: 57rem; }
4853−
4854−.pt-57 {
4855− padding-top: 57rem; }
4856−
4857−.pb-57 {
4858− padding-bottom: 57rem; }
4859−
4860−.pl-57 {
4861− padding-left: 57rem; }
4862−
4863−.pr-57 {
4864− padding-right: 57rem; }
4865−
4866−.pv-57 {
4867− padding-top: 57rem;
4868− padding-bottom: 57rem; }
4869−
4870−.ph-57 {
4871− padding-left: 57rem;
4872− padding-right: 57rem; }
4873−
4874−.w-58 {
4875− width: 58rem; }
4876−
4877−.h-58 {
4878− height: 58rem; }
4879−
4880−.m-58 {
4881− margin: 58rem; }
4882−
4883−.mt-58 {
4884− margin-top: 58rem; }
4885−
4886−.mb-58 {
4887− margin-bottom: 58rem; }
4888−
4889−.ml-58 {
4890− margin-left: 58rem; }
4891−
4892−.mr-58 {
4893− margin-right: 58rem; }
4894−
4895−.mv-58 {
4896− margin-top: 58rem;
4897− margin-bottom: 58rem; }
4898−
4899−.mh-58 {
4900− margin-left: 58rem;
4901− margin-right: 58rem; }
4902−
4903−.p-58 {
4904− padding: 58rem; }
4905−
4906−.pt-58 {
4907− padding-top: 58rem; }
4908−
4909−.pb-58 {
4910− padding-bottom: 58rem; }
4911−
4912−.pl-58 {
4913− padding-left: 58rem; }
4914−
4915−.pr-58 {
4916− padding-right: 58rem; }
4917−
4918−.pv-58 {
4919− padding-top: 58rem;
4920− padding-bottom: 58rem; }
4921−
4922−.ph-58 {
4923− padding-left: 58rem;
4924− padding-right: 58rem; }
4925−
4926−.w-59 {
4927− width: 59rem; }
4928−
4929−.h-59 {
4930− height: 59rem; }
4931−
4932−.m-59 {
4933− margin: 59rem; }
4934−
4935−.mt-59 {
4936− margin-top: 59rem; }
4937−
4938−.mb-59 {
4939− margin-bottom: 59rem; }
4940−
4941−.ml-59 {
4942− margin-left: 59rem; }
4943−
4944−.mr-59 {
4945− margin-right: 59rem; }
4946−
4947−.mv-59 {
4948− margin-top: 59rem;
4949− margin-bottom: 59rem; }
4950−
4951−.mh-59 {
4952− margin-left: 59rem;
4953− margin-right: 59rem; }
4954−
4955−.p-59 {
4956− padding: 59rem; }
4957−
4958−.pt-59 {
4959− padding-top: 59rem; }
4960−
4961−.pb-59 {
4962− padding-bottom: 59rem; }
4963−
4964−.pl-59 {
4965− padding-left: 59rem; }
4966−
4967−.pr-59 {
4968− padding-right: 59rem; }
4969−
4970−.pv-59 {
4971− padding-top: 59rem;
4972− padding-bottom: 59rem; }
4973−
4974−.ph-59 {
4975− padding-left: 59rem;
4976− padding-right: 59rem; }
4977−
4978−.w-60 {
4979− width: 60rem; }
4980−
4981−.h-60 {
4982− height: 60rem; }
4983−
4984−.m-60 {
4985− margin: 60rem; }
4986−
4987−.mt-60 {
4988− margin-top: 60rem; }
4989−
4990−.mb-60 {
4991− margin-bottom: 60rem; }
4992−
4993−.ml-60 {
4994− margin-left: 60rem; }
4995−
4996−.mr-60 {
4997− margin-right: 60rem; }
4998−
4999−.mv-60 {
5000− margin-top: 60rem;
5001− margin-bottom: 60rem; }
5002−
5003−.mh-60 {
5004− margin-left: 60rem;
5005− margin-right: 60rem; }
5006−
5007−.p-60 {
5008− padding: 60rem; }
5009−
5010−.pt-60 {
5011− padding-top: 60rem; }
5012−
5013−.pb-60 {
5014− padding-bottom: 60rem; }
5015−
5016−.pl-60 {
5017− padding-left: 60rem; }
5018−
5019−.pr-60 {
5020− padding-right: 60rem; }
5021−
5022−.pv-60 {
5023− padding-top: 60rem;
5024− padding-bottom: 60rem; }
5025−
5026−.ph-60 {
5027− padding-left: 60rem;
5028− padding-right: 60rem; }
5029−
5030−.w-61 {
5031− width: 61rem; }
5032−
5033−.h-61 {
5034− height: 61rem; }
5035−
5036−.m-61 {
5037− margin: 61rem; }
5038−
5039−.mt-61 {
5040− margin-top: 61rem; }
5041−
5042−.mb-61 {
5043− margin-bottom: 61rem; }
5044−
5045−.ml-61 {
5046− margin-left: 61rem; }
5047−
5048−.mr-61 {
5049− margin-right: 61rem; }
5050−
5051−.mv-61 {
5052− margin-top: 61rem;
5053− margin-bottom: 61rem; }
5054−
5055−.mh-61 {
5056− margin-left: 61rem;
5057− margin-right: 61rem; }
5058−
5059−.p-61 {
5060− padding: 61rem; }
5061−
5062−.pt-61 {
5063− padding-top: 61rem; }
5064−
5065−.pb-61 {
5066− padding-bottom: 61rem; }
5067−
5068−.pl-61 {
5069− padding-left: 61rem; }
5070−
5071−.pr-61 {
5072− padding-right: 61rem; }
5073−
5074−.pv-61 {
5075− padding-top: 61rem;
5076− padding-bottom: 61rem; }
5077−
5078−.ph-61 {
5079− padding-left: 61rem;
5080− padding-right: 61rem; }
5081−
5082−.w-62 {
5083− width: 62rem; }
5084−
5085−.h-62 {
5086− height: 62rem; }
5087−
5088−.m-62 {
5089− margin: 62rem; }
5090−
5091−.mt-62 {
5092− margin-top: 62rem; }
5093−
5094−.mb-62 {
5095− margin-bottom: 62rem; }
5096−
5097−.ml-62 {
5098− margin-left: 62rem; }
5099−
5100−.mr-62 {
5101− margin-right: 62rem; }
5102−
5103−.mv-62 {
5104− margin-top: 62rem;
5105− margin-bottom: 62rem; }
5106−
5107−.mh-62 {
5108− margin-left: 62rem;
5109− margin-right: 62rem; }
5110−
5111−.p-62 {
5112− padding: 62rem; }
5113−
5114−.pt-62 {
5115− padding-top: 62rem; }
5116−
5117−.pb-62 {
5118− padding-bottom: 62rem; }
5119−
5120−.pl-62 {
5121− padding-left: 62rem; }
5122−
5123−.pr-62 {
5124− padding-right: 62rem; }
5125−
5126−.pv-62 {
5127− padding-top: 62rem;
5128− padding-bottom: 62rem; }
5129−
5130−.ph-62 {
5131− padding-left: 62rem;
5132− padding-right: 62rem; }
5133−
5134−.w-63 {
5135− width: 63rem; }
5136−
5137−.h-63 {
5138− height: 63rem; }
5139−
5140−.m-63 {
5141− margin: 63rem; }
5142−
5143−.mt-63 {
5144− margin-top: 63rem; }
5145−
5146−.mb-63 {
5147− margin-bottom: 63rem; }
5148−
5149−.ml-63 {
5150− margin-left: 63rem; }
5151−
5152−.mr-63 {
5153− margin-right: 63rem; }
5154−
5155−.mv-63 {
5156− margin-top: 63rem;
5157− margin-bottom: 63rem; }
5158−
5159−.mh-63 {
5160− margin-left: 63rem;
5161− margin-right: 63rem; }
5162−
5163−.p-63 {
5164− padding: 63rem; }
5165−
5166−.pt-63 {
5167− padding-top: 63rem; }
5168−
5169−.pb-63 {
5170− padding-bottom: 63rem; }
5171−
5172−.pl-63 {
5173− padding-left: 63rem; }
5174−
5175−.pr-63 {
5176− padding-right: 63rem; }
5177−
5178−.pv-63 {
5179− padding-top: 63rem;
5180− padding-bottom: 63rem; }
5181−
5182−.ph-63 {
5183− padding-left: 63rem;
5184− padding-right: 63rem; }
5185−
5186−.w-64 {
5187− width: 64rem; }
5188−
5189−.h-64 {
5190− height: 64rem; }
5191−
5192−.m-64 {
5193− margin: 64rem; }
5194−
5195−.mt-64 {
5196− margin-top: 64rem; }
5197−
5198−.mb-64 {
5199− margin-bottom: 64rem; }
5200−
5201−.ml-64 {
5202− margin-left: 64rem; }
5203−
5204−.mr-64 {
5205− margin-right: 64rem; }
5206−
5207−.mv-64 {
5208− margin-top: 64rem;
5209− margin-bottom: 64rem; }
5210−
5211−.mh-64 {
5212− margin-left: 64rem;
5213− margin-right: 64rem; }
5214−
5215−.p-64 {
5216− padding: 64rem; }
5217−
5218−.pt-64 {
5219− padding-top: 64rem; }
5220−
5221−.pb-64 {
5222− padding-bottom: 64rem; }
5223−
5224−.pl-64 {
5225− padding-left: 64rem; }
5226−
5227−.pr-64 {
5228− padding-right: 64rem; }
5229−
5230−.pv-64 {
5231− padding-top: 64rem;
5232− padding-bottom: 64rem; }
5233−
5234−.ph-64 {
5235− padding-left: 64rem;
5236− padding-right: 64rem; }
5237−
5238−.w-65 {
5239− width: 65rem; }
5240−
5241−.h-65 {
5242− height: 65rem; }
5243−
5244−.m-65 {
5245− margin: 65rem; }
5246−
5247−.mt-65 {
5248− margin-top: 65rem; }
5249−
5250−.mb-65 {
5251− margin-bottom: 65rem; }
5252−
5253−.ml-65 {
5254− margin-left: 65rem; }
5255−
5256−.mr-65 {
5257− margin-right: 65rem; }
5258−
5259−.mv-65 {
5260− margin-top: 65rem;
5261− margin-bottom: 65rem; }
5262−
5263−.mh-65 {
5264− margin-left: 65rem;
5265− margin-right: 65rem; }
5266−
5267−.p-65 {
5268− padding: 65rem; }
5269−
5270−.pt-65 {
5271− padding-top: 65rem; }
5272−
5273−.pb-65 {
5274− padding-bottom: 65rem; }
5275−
5276−.pl-65 {
5277− padding-left: 65rem; }
5278−
5279−.pr-65 {
5280− padding-right: 65rem; }
5281−
5282−.pv-65 {
5283− padding-top: 65rem;
5284− padding-bottom: 65rem; }
5285−
5286−.ph-65 {
5287− padding-left: 65rem;
5288− padding-right: 65rem; }
5289−
5290−.w-66 {
5291− width: 66rem; }
5292−
5293−.h-66 {
5294− height: 66rem; }
5295−
5296−.m-66 {
5297− margin: 66rem; }
5298−
5299−.mt-66 {
5300− margin-top: 66rem; }
5301−
5302−.mb-66 {
5303− margin-bottom: 66rem; }
5304−
5305−.ml-66 {
5306− margin-left: 66rem; }
5307−
5308−.mr-66 {
5309− margin-right: 66rem; }
5310−
5311−.mv-66 {
5312− margin-top: 66rem;
5313− margin-bottom: 66rem; }
5314−
5315−.mh-66 {
5316− margin-left: 66rem;
5317− margin-right: 66rem; }
5318−
5319−.p-66 {
5320− padding: 66rem; }
5321−
5322−.pt-66 {
5323− padding-top: 66rem; }
5324−
5325−.pb-66 {
5326− padding-bottom: 66rem; }
5327−
5328−.pl-66 {
5329− padding-left: 66rem; }
5330−
5331−.pr-66 {
5332− padding-right: 66rem; }
5333−
5334−.pv-66 {
5335− padding-top: 66rem;
5336− padding-bottom: 66rem; }
5337−
5338−.ph-66 {
5339− padding-left: 66rem;
5340− padding-right: 66rem; }
5341−
5342−.w-67 {
5343− width: 67rem; }
5344−
5345−.h-67 {
5346− height: 67rem; }
5347−
5348−.m-67 {
5349− margin: 67rem; }
5350−
5351−.mt-67 {
5352− margin-top: 67rem; }
5353−
5354−.mb-67 {
5355− margin-bottom: 67rem; }
5356−
5357−.ml-67 {
5358− margin-left: 67rem; }
5359−
5360−.mr-67 {
5361− margin-right: 67rem; }
5362−
5363−.mv-67 {
5364− margin-top: 67rem;
5365− margin-bottom: 67rem; }
5366−
5367−.mh-67 {
5368− margin-left: 67rem;
5369− margin-right: 67rem; }
5370−
5371−.p-67 {
5372− padding: 67rem; }
5373−
5374−.pt-67 {
5375− padding-top: 67rem; }
5376−
5377−.pb-67 {
5378− padding-bottom: 67rem; }
5379−
5380−.pl-67 {
5381− padding-left: 67rem; }
5382−
5383−.pr-67 {
5384− padding-right: 67rem; }
5385−
5386−.pv-67 {
5387− padding-top: 67rem;
5388− padding-bottom: 67rem; }
5389−
5390−.ph-67 {
5391− padding-left: 67rem;
5392− padding-right: 67rem; }
5393−
5394−.w-68 {
5395− width: 68rem; }
5396−
5397−.h-68 {
5398− height: 68rem; }
5399−
5400−.m-68 {
5401− margin: 68rem; }
5402−
5403−.mt-68 {
5404− margin-top: 68rem; }
5405−
5406−.mb-68 {
5407− margin-bottom: 68rem; }
5408−
5409−.ml-68 {
5410− margin-left: 68rem; }
5411−
5412−.mr-68 {
5413− margin-right: 68rem; }
5414−
5415−.mv-68 {
5416− margin-top: 68rem;
5417− margin-bottom: 68rem; }
5418−
5419−.mh-68 {
5420− margin-left: 68rem;
5421− margin-right: 68rem; }
5422−
5423−.p-68 {
5424− padding: 68rem; }
5425−
5426−.pt-68 {
5427− padding-top: 68rem; }
5428−
5429−.pb-68 {
5430− padding-bottom: 68rem; }
5431−
5432−.pl-68 {
5433− padding-left: 68rem; }
5434−
5435−.pr-68 {
5436− padding-right: 68rem; }
5437−
5438−.pv-68 {
5439− padding-top: 68rem;
5440− padding-bottom: 68rem; }
5441−
5442−.ph-68 {
5443− padding-left: 68rem;
5444− padding-right: 68rem; }
5445−
5446−.w-69 {
5447− width: 69rem; }
5448−
5449−.h-69 {
5450− height: 69rem; }
5451−
5452−.m-69 {
5453− margin: 69rem; }
5454−
5455−.mt-69 {
5456− margin-top: 69rem; }
5457−
5458−.mb-69 {
5459− margin-bottom: 69rem; }
5460−
5461−.ml-69 {
5462− margin-left: 69rem; }
5463−
5464−.mr-69 {
5465− margin-right: 69rem; }
5466−
5467−.mv-69 {
5468− margin-top: 69rem;
5469− margin-bottom: 69rem; }
5470−
5471−.mh-69 {
5472− margin-left: 69rem;
5473− margin-right: 69rem; }
5474−
5475−.p-69 {
5476− padding: 69rem; }
5477−
5478−.pt-69 {
5479− padding-top: 69rem; }
5480−
5481−.pb-69 {
5482− padding-bottom: 69rem; }
5483−
5484−.pl-69 {
5485− padding-left: 69rem; }
5486−
5487−.pr-69 {
5488− padding-right: 69rem; }
5489−
5490−.pv-69 {
5491− padding-top: 69rem;
5492− padding-bottom: 69rem; }
5493−
5494−.ph-69 {
5495− padding-left: 69rem;
5496− padding-right: 69rem; }
5497−
5498−.w-70 {
5499− width: 70rem; }
5500−
5501−.h-70 {
5502− height: 70rem; }
5503−
5504−.m-70 {
5505− margin: 70rem; }
5506−
5507−.mt-70 {
5508− margin-top: 70rem; }
5509−
5510−.mb-70 {
5511− margin-bottom: 70rem; }
5512−
5513−.ml-70 {
5514− margin-left: 70rem; }
5515−
5516−.mr-70 {
5517− margin-right: 70rem; }
5518−
5519−.mv-70 {
5520− margin-top: 70rem;
5521− margin-bottom: 70rem; }
5522−
5523−.mh-70 {
5524− margin-left: 70rem;
5525− margin-right: 70rem; }
5526−
5527−.p-70 {
5528− padding: 70rem; }
5529−
5530−.pt-70 {
5531− padding-top: 70rem; }
5532−
5533−.pb-70 {
5534− padding-bottom: 70rem; }
5535−
5536−.pl-70 {
5537− padding-left: 70rem; }
5538−
5539−.pr-70 {
5540− padding-right: 70rem; }
5541−
5542−.pv-70 {
5543− padding-top: 70rem;
5544− padding-bottom: 70rem; }
5545−
5546−.ph-70 {
5547− padding-left: 70rem;
5548− padding-right: 70rem; }
5549−
5550−.w-71 {
5551− width: 71rem; }
5552−
5553−.h-71 {
5554− height: 71rem; }
5555−
5556−.m-71 {
5557− margin: 71rem; }
5558−
5559−.mt-71 {
5560− margin-top: 71rem; }
5561−
5562−.mb-71 {
5563− margin-bottom: 71rem; }
5564−
5565−.ml-71 {
5566− margin-left: 71rem; }
5567−
5568−.mr-71 {
5569− margin-right: 71rem; }
5570−
5571−.mv-71 {
5572− margin-top: 71rem;
5573− margin-bottom: 71rem; }
5574−
5575−.mh-71 {
5576− margin-left: 71rem;
5577− margin-right: 71rem; }
5578−
5579−.p-71 {
5580− padding: 71rem; }
5581−
5582−.pt-71 {
5583− padding-top: 71rem; }
5584−
5585−.pb-71 {
5586− padding-bottom: 71rem; }
5587−
5588−.pl-71 {
5589− padding-left: 71rem; }
5590−
5591−.pr-71 {
5592− padding-right: 71rem; }
5593−
5594−.pv-71 {
5595− padding-top: 71rem;
5596− padding-bottom: 71rem; }
5597−
5598−.ph-71 {
5599− padding-left: 71rem;
5600− padding-right: 71rem; }
5601−
5602−.w-72 {
5603− width: 72rem; }
5604−
5605−.h-72 {
5606− height: 72rem; }
5607−
5608−.m-72 {
5609− margin: 72rem; }
5610−
5611−.mt-72 {
5612− margin-top: 72rem; }
5613−
5614−.mb-72 {
5615− margin-bottom: 72rem; }
5616−
5617−.ml-72 {
5618− margin-left: 72rem; }
5619−
5620−.mr-72 {
5621− margin-right: 72rem; }
5622−
5623−.mv-72 {
5624− margin-top: 72rem;
5625− margin-bottom: 72rem; }
5626−
5627−.mh-72 {
5628− margin-left: 72rem;
5629− margin-right: 72rem; }
5630−
5631−.p-72 {
5632− padding: 72rem; }
5633−
5634−.pt-72 {
5635− padding-top: 72rem; }
5636−
5637−.pb-72 {
5638− padding-bottom: 72rem; }
5639−
5640−.pl-72 {
5641− padding-left: 72rem; }
5642−
5643−.pr-72 {
5644− padding-right: 72rem; }
5645−
5646−.pv-72 {
5647− padding-top: 72rem;
5648− padding-bottom: 72rem; }
5649−
5650−.ph-72 {
5651− padding-left: 72rem;
5652− padding-right: 72rem; }
5653−
5654−.w-73 {
5655− width: 73rem; }
5656−
5657−.h-73 {
5658− height: 73rem; }
5659−
5660−.m-73 {
5661− margin: 73rem; }
5662−
5663−.mt-73 {
5664− margin-top: 73rem; }
5665−
5666−.mb-73 {
5667− margin-bottom: 73rem; }
5668−
5669−.ml-73 {
5670− margin-left: 73rem; }
5671−
5672−.mr-73 {
5673− margin-right: 73rem; }
5674−
5675−.mv-73 {
5676− margin-top: 73rem;
5677− margin-bottom: 73rem; }
5678−
5679−.mh-73 {
5680− margin-left: 73rem;
5681− margin-right: 73rem; }
5682−
5683−.p-73 {
5684− padding: 73rem; }
5685−
5686−.pt-73 {
5687− padding-top: 73rem; }
5688−
5689−.pb-73 {
5690− padding-bottom: 73rem; }
5691−
5692−.pl-73 {
5693− padding-left: 73rem; }
5694−
5695−.pr-73 {
5696− padding-right: 73rem; }
5697−
5698−.pv-73 {
5699− padding-top: 73rem;
5700− padding-bottom: 73rem; }
5701−
5702−.ph-73 {
5703− padding-left: 73rem;
5704− padding-right: 73rem; }
5705−
5706−.w-74 {
5707− width: 74rem; }
5708−
5709−.h-74 {
5710− height: 74rem; }
5711−
5712−.m-74 {
5713− margin: 74rem; }
5714−
5715−.mt-74 {
5716− margin-top: 74rem; }
5717−
5718−.mb-74 {
5719− margin-bottom: 74rem; }
5720−
5721−.ml-74 {
5722− margin-left: 74rem; }
5723−
5724−.mr-74 {
5725− margin-right: 74rem; }
5726−
5727−.mv-74 {
5728− margin-top: 74rem;
5729− margin-bottom: 74rem; }
5730−
5731−.mh-74 {
5732− margin-left: 74rem;
5733− margin-right: 74rem; }
5734−
5735−.p-74 {
5736− padding: 74rem; }
5737−
5738−.pt-74 {
5739− padding-top: 74rem; }
5740−
5741−.pb-74 {
5742− padding-bottom: 74rem; }
5743−
5744−.pl-74 {
5745− padding-left: 74rem; }
5746−
5747−.pr-74 {
5748− padding-right: 74rem; }
5749−
5750−.pv-74 {
5751− padding-top: 74rem;
5752− padding-bottom: 74rem; }
5753−
5754−.ph-74 {
5755− padding-left: 74rem;
5756− padding-right: 74rem; }
5757−
5758−.w-75 {
5759− width: 75rem; }
5760−
5761−.h-75 {
5762− height: 75rem; }
5763−
5764−.m-75 {
5765− margin: 75rem; }
5766−
5767−.mt-75 {
5768− margin-top: 75rem; }
5769−
5770−.mb-75 {
5771− margin-bottom: 75rem; }
5772−
5773−.ml-75 {
5774− margin-left: 75rem; }
5775−
5776−.mr-75 {
5777− margin-right: 75rem; }
5778−
5779−.mv-75 {
5780− margin-top: 75rem;
5781− margin-bottom: 75rem; }
5782−
5783−.mh-75 {
5784− margin-left: 75rem;
5785− margin-right: 75rem; }
5786−
5787−.p-75 {
5788− padding: 75rem; }
5789−
5790−.pt-75 {
5791− padding-top: 75rem; }
5792−
5793−.pb-75 {
5794− padding-bottom: 75rem; }
5795−
5796−.pl-75 {
5797− padding-left: 75rem; }
5798−
5799−.pr-75 {
5800− padding-right: 75rem; }
5801−
5802−.pv-75 {
5803− padding-top: 75rem;
5804− padding-bottom: 75rem; }
5805−
5806−.ph-75 {
5807− padding-left: 75rem;
5808− padding-right: 75rem; }
5809−
5810−.w-76 {
5811− width: 76rem; }
5812−
5813−.h-76 {
5814− height: 76rem; }
5815−
5816−.m-76 {
5817− margin: 76rem; }
5818−
5819−.mt-76 {
5820− margin-top: 76rem; }
5821−
5822−.mb-76 {
5823− margin-bottom: 76rem; }
5824−
5825−.ml-76 {
5826− margin-left: 76rem; }
5827−
5828−.mr-76 {
5829− margin-right: 76rem; }
5830−
5831−.mv-76 {
5832− margin-top: 76rem;
5833− margin-bottom: 76rem; }
5834−
5835−.mh-76 {
5836− margin-left: 76rem;
5837− margin-right: 76rem; }
5838−
5839−.p-76 {
5840− padding: 76rem; }
5841−
5842−.pt-76 {
5843− padding-top: 76rem; }
5844−
5845−.pb-76 {
5846− padding-bottom: 76rem; }
5847−
5848−.pl-76 {
5849− padding-left: 76rem; }
5850−
5851−.pr-76 {
5852− padding-right: 76rem; }
5853−
5854−.pv-76 {
5855− padding-top: 76rem;
5856− padding-bottom: 76rem; }
5857−
5858−.ph-76 {
5859− padding-left: 76rem;
5860− padding-right: 76rem; }
5861−
5862−.w-77 {
5863− width: 77rem; }
5864−
5865−.h-77 {
5866− height: 77rem; }
5867−
5868−.m-77 {
5869− margin: 77rem; }
5870−
5871−.mt-77 {
5872− margin-top: 77rem; }
5873−
5874−.mb-77 {
5875− margin-bottom: 77rem; }
5876−
5877−.ml-77 {
5878− margin-left: 77rem; }
5879−
5880−.mr-77 {
5881− margin-right: 77rem; }
5882−
5883−.mv-77 {
5884− margin-top: 77rem;
5885− margin-bottom: 77rem; }
5886−
5887−.mh-77 {
5888− margin-left: 77rem;
5889− margin-right: 77rem; }
5890−
5891−.p-77 {
5892− padding: 77rem; }
5893−
5894−.pt-77 {
5895− padding-top: 77rem; }
5896−
5897−.pb-77 {
5898− padding-bottom: 77rem; }
5899−
5900−.pl-77 {
5901− padding-left: 77rem; }
5902−
5903−.pr-77 {
5904− padding-right: 77rem; }
5905−
5906−.pv-77 {
5907− padding-top: 77rem;
5908− padding-bottom: 77rem; }
5909−
5910−.ph-77 {
5911− padding-left: 77rem;
5912− padding-right: 77rem; }
5913−
5914−.w-78 {
5915− width: 78rem; }
5916−
5917−.h-78 {
5918− height: 78rem; }
5919−
5920−.m-78 {
5921− margin: 78rem; }
5922−
5923−.mt-78 {
5924− margin-top: 78rem; }
5925−
5926−.mb-78 {
5927− margin-bottom: 78rem; }
5928−
5929−.ml-78 {
5930− margin-left: 78rem; }
5931−
5932−.mr-78 {
5933− margin-right: 78rem; }
5934−
5935−.mv-78 {
5936− margin-top: 78rem;
5937− margin-bottom: 78rem; }
5938−
5939−.mh-78 {
5940− margin-left: 78rem;
5941− margin-right: 78rem; }
5942−
5943−.p-78 {
5944− padding: 78rem; }
5945−
5946−.pt-78 {
5947− padding-top: 78rem; }
5948−
5949−.pb-78 {
5950− padding-bottom: 78rem; }
5951−
5952−.pl-78 {
5953− padding-left: 78rem; }
5954−
5955−.pr-78 {
5956− padding-right: 78rem; }
5957−
5958−.pv-78 {
5959− padding-top: 78rem;
5960− padding-bottom: 78rem; }
5961−
5962−.ph-78 {
5963− padding-left: 78rem;
5964− padding-right: 78rem; }
5965−
5966−.w-79 {
5967− width: 79rem; }
5968−
5969−.h-79 {
5970− height: 79rem; }
5971−
5972−.m-79 {
5973− margin: 79rem; }
5974−
5975−.mt-79 {
5976− margin-top: 79rem; }
5977−
5978−.mb-79 {
5979− margin-bottom: 79rem; }
5980−
5981−.ml-79 {
5982− margin-left: 79rem; }
5983−
5984−.mr-79 {
5985− margin-right: 79rem; }
5986−
5987−.mv-79 {
5988− margin-top: 79rem;
5989− margin-bottom: 79rem; }
5990−
5991−.mh-79 {
5992− margin-left: 79rem;
5993− margin-right: 79rem; }
5994−
5995−.p-79 {
5996− padding: 79rem; }
5997−
5998−.pt-79 {
5999− padding-top: 79rem; }
6000−
6001−.pb-79 {
6002− padding-bottom: 79rem; }
6003−
6004−.pl-79 {
6005− padding-left: 79rem; }
6006−
6007−.pr-79 {
6008− padding-right: 79rem; }
6009−
6010−.pv-79 {
6011− padding-top: 79rem;
6012− padding-bottom: 79rem; }
6013−
6014−.ph-79 {
6015− padding-left: 79rem;
6016− padding-right: 79rem; }
6017−
6018−.w-80 {
6019− width: 80rem; }
6020−
6021−.h-80 {
6022− height: 80rem; }
6023−
6024−.m-80 {
6025− margin: 80rem; }
6026−
6027−.mt-80 {
6028− margin-top: 80rem; }
6029−
6030−.mb-80 {
6031− margin-bottom: 80rem; }
6032−
6033−.ml-80 {
6034− margin-left: 80rem; }
6035−
6036−.mr-80 {
6037− margin-right: 80rem; }
6038−
6039−.mv-80 {
6040− margin-top: 80rem;
6041− margin-bottom: 80rem; }
6042−
6043−.mh-80 {
6044− margin-left: 80rem;
6045− margin-right: 80rem; }
6046−
6047−.p-80 {
6048− padding: 80rem; }
6049−
6050−.pt-80 {
6051− padding-top: 80rem; }
6052−
6053−.pb-80 {
6054− padding-bottom: 80rem; }
6055−
6056−.pl-80 {
6057− padding-left: 80rem; }
6058−
6059−.pr-80 {
6060− padding-right: 80rem; }
6061−
6062−.pv-80 {
6063− padding-top: 80rem;
6064− padding-bottom: 80rem; }
6065−
6066−.ph-80 {
6067− padding-left: 80rem;
6068− padding-right: 80rem; }
6069−
6070−.w-81 {
6071− width: 81rem; }
6072−
6073−.h-81 {
6074− height: 81rem; }
6075−
6076−.m-81 {
6077− margin: 81rem; }
6078−
6079−.mt-81 {
6080− margin-top: 81rem; }
6081−
6082−.mb-81 {
6083− margin-bottom: 81rem; }
6084−
6085−.ml-81 {
6086− margin-left: 81rem; }
6087−
6088−.mr-81 {
6089− margin-right: 81rem; }
6090−
6091−.mv-81 {
6092− margin-top: 81rem;
6093− margin-bottom: 81rem; }
6094−
6095−.mh-81 {
6096− margin-left: 81rem;
6097− margin-right: 81rem; }
6098−
6099−.p-81 {
6100− padding: 81rem; }
6101−
6102−.pt-81 {
6103− padding-top: 81rem; }
6104−
6105−.pb-81 {
6106− padding-bottom: 81rem; }
6107−
6108−.pl-81 {
6109− padding-left: 81rem; }
6110−
6111−.pr-81 {
6112− padding-right: 81rem; }
6113−
6114−.pv-81 {
6115− padding-top: 81rem;
6116− padding-bottom: 81rem; }
6117−
6118−.ph-81 {
6119− padding-left: 81rem;
6120− padding-right: 81rem; }
6121−
6122−.w-82 {
6123− width: 82rem; }
6124−
6125−.h-82 {
6126− height: 82rem; }
6127−
6128−.m-82 {
6129− margin: 82rem; }
6130−
6131−.mt-82 {
6132− margin-top: 82rem; }
6133−
6134−.mb-82 {
6135− margin-bottom: 82rem; }
6136−
6137−.ml-82 {
6138− margin-left: 82rem; }
6139−
6140−.mr-82 {
6141− margin-right: 82rem; }
6142−
6143−.mv-82 {
6144− margin-top: 82rem;
6145− margin-bottom: 82rem; }
6146−
6147−.mh-82 {
6148− margin-left: 82rem;
6149− margin-right: 82rem; }
6150−
6151−.p-82 {
6152− padding: 82rem; }
6153−
6154−.pt-82 {
6155− padding-top: 82rem; }
6156−
6157−.pb-82 {
6158− padding-bottom: 82rem; }
6159−
6160−.pl-82 {
6161− padding-left: 82rem; }
6162−
6163−.pr-82 {
6164− padding-right: 82rem; }
6165−
6166−.pv-82 {
6167− padding-top: 82rem;
6168− padding-bottom: 82rem; }
6169−
6170−.ph-82 {
6171− padding-left: 82rem;
6172− padding-right: 82rem; }
6173−
6174−.w-83 {
6175− width: 83rem; }
6176−
6177−.h-83 {
6178− height: 83rem; }
6179−
6180−.m-83 {
6181− margin: 83rem; }
6182−
6183−.mt-83 {
6184− margin-top: 83rem; }
6185−
6186−.mb-83 {
6187− margin-bottom: 83rem; }
6188−
6189−.ml-83 {
6190− margin-left: 83rem; }
6191−
6192−.mr-83 {
6193− margin-right: 83rem; }
6194−
6195−.mv-83 {
6196− margin-top: 83rem;
6197− margin-bottom: 83rem; }
6198−
6199−.mh-83 {
6200− margin-left: 83rem;
6201− margin-right: 83rem; }
6202−
6203−.p-83 {
6204− padding: 83rem; }
6205−
6206−.pt-83 {
6207− padding-top: 83rem; }
6208−
6209−.pb-83 {
6210− padding-bottom: 83rem; }
6211−
6212−.pl-83 {
6213− padding-left: 83rem; }
6214−
6215−.pr-83 {
6216− padding-right: 83rem; }
6217−
6218−.pv-83 {
6219− padding-top: 83rem;
6220− padding-bottom: 83rem; }
6221−
6222−.ph-83 {
6223− padding-left: 83rem;
6224− padding-right: 83rem; }
6225−
6226−.w-84 {
6227− width: 84rem; }
6228−
6229−.h-84 {
6230− height: 84rem; }
6231−
6232−.m-84 {
6233− margin: 84rem; }
6234−
6235−.mt-84 {
6236− margin-top: 84rem; }
6237−
6238−.mb-84 {
6239− margin-bottom: 84rem; }
6240−
6241−.ml-84 {
6242− margin-left: 84rem; }
6243−
6244−.mr-84 {
6245− margin-right: 84rem; }
6246−
6247−.mv-84 {
6248− margin-top: 84rem;
6249− margin-bottom: 84rem; }
6250−
6251−.mh-84 {
6252− margin-left: 84rem;
6253− margin-right: 84rem; }
6254−
6255−.p-84 {
6256− padding: 84rem; }
6257−
6258−.pt-84 {
6259− padding-top: 84rem; }
6260−
6261−.pb-84 {
6262− padding-bottom: 84rem; }
6263−
6264−.pl-84 {
6265− padding-left: 84rem; }
6266−
6267−.pr-84 {
6268− padding-right: 84rem; }
6269−
6270−.pv-84 {
6271− padding-top: 84rem;
6272− padding-bottom: 84rem; }
6273−
6274−.ph-84 {
6275− padding-left: 84rem;
6276− padding-right: 84rem; }
6277−
6278−.w-85 {
6279− width: 85rem; }
6280−
6281−.h-85 {
6282− height: 85rem; }
6283−
6284−.m-85 {
6285− margin: 85rem; }
6286−
6287−.mt-85 {
6288− margin-top: 85rem; }
6289−
6290−.mb-85 {
6291− margin-bottom: 85rem; }
6292−
6293−.ml-85 {
6294− margin-left: 85rem; }
6295−
6296−.mr-85 {
6297− margin-right: 85rem; }
6298−
6299−.mv-85 {
6300− margin-top: 85rem;
6301− margin-bottom: 85rem; }
6302−
6303−.mh-85 {
6304− margin-left: 85rem;
6305− margin-right: 85rem; }
6306−
6307−.p-85 {
6308− padding: 85rem; }
6309−
6310−.pt-85 {
6311− padding-top: 85rem; }
6312−
6313−.pb-85 {
6314− padding-bottom: 85rem; }
6315−
6316−.pl-85 {
6317− padding-left: 85rem; }
6318−
6319−.pr-85 {
6320− padding-right: 85rem; }
6321−
6322−.pv-85 {
6323− padding-top: 85rem;
6324− padding-bottom: 85rem; }
6325−
6326−.ph-85 {
6327− padding-left: 85rem;
6328− padding-right: 85rem; }
6329−
6330−.w-86 {
6331− width: 86rem; }
6332−
6333−.h-86 {
6334− height: 86rem; }
6335−
6336−.m-86 {
6337− margin: 86rem; }
6338−
6339−.mt-86 {
6340− margin-top: 86rem; }
6341−
6342−.mb-86 {
6343− margin-bottom: 86rem; }
6344−
6345−.ml-86 {
6346− margin-left: 86rem; }
6347−
6348−.mr-86 {
6349− margin-right: 86rem; }
6350−
6351−.mv-86 {
6352− margin-top: 86rem;
6353− margin-bottom: 86rem; }
6354−
6355−.mh-86 {
6356− margin-left: 86rem;
6357− margin-right: 86rem; }
6358−
6359−.p-86 {
6360− padding: 86rem; }
6361−
6362−.pt-86 {
6363− padding-top: 86rem; }
6364−
6365−.pb-86 {
6366− padding-bottom: 86rem; }
6367−
6368−.pl-86 {
6369− padding-left: 86rem; }
6370−
6371−.pr-86 {
6372− padding-right: 86rem; }
6373−
6374−.pv-86 {
6375− padding-top: 86rem;
6376− padding-bottom: 86rem; }
6377−
6378−.ph-86 {
6379− padding-left: 86rem;
6380− padding-right: 86rem; }
6381−
6382−.w-87 {
6383− width: 87rem; }
6384−
6385−.h-87 {
6386− height: 87rem; }
6387−
6388−.m-87 {
6389− margin: 87rem; }
6390−
6391−.mt-87 {
6392− margin-top: 87rem; }
6393−
6394−.mb-87 {
6395− margin-bottom: 87rem; }
6396−
6397−.ml-87 {
6398− margin-left: 87rem; }
6399−
6400−.mr-87 {
6401− margin-right: 87rem; }
6402−
6403−.mv-87 {
6404− margin-top: 87rem;
6405− margin-bottom: 87rem; }
6406−
6407−.mh-87 {
6408− margin-left: 87rem;
6409− margin-right: 87rem; }
6410−
6411−.p-87 {
6412− padding: 87rem; }
6413−
6414−.pt-87 {
6415− padding-top: 87rem; }
6416−
6417−.pb-87 {
6418− padding-bottom: 87rem; }
6419−
6420−.pl-87 {
6421− padding-left: 87rem; }
6422−
6423−.pr-87 {
6424− padding-right: 87rem; }
6425−
6426−.pv-87 {
6427− padding-top: 87rem;
6428− padding-bottom: 87rem; }
6429−
6430−.ph-87 {
6431− padding-left: 87rem;
6432− padding-right: 87rem; }
6433−
6434−.w-88 {
6435− width: 88rem; }
6436−
6437−.h-88 {
6438− height: 88rem; }
6439−
6440−.m-88 {
6441− margin: 88rem; }
6442−
6443−.mt-88 {
6444− margin-top: 88rem; }
6445−
6446−.mb-88 {
6447− margin-bottom: 88rem; }
6448−
6449−.ml-88 {
6450− margin-left: 88rem; }
6451−
6452−.mr-88 {
6453− margin-right: 88rem; }
6454−
6455−.mv-88 {
6456− margin-top: 88rem;
6457− margin-bottom: 88rem; }
6458−
6459−.mh-88 {
6460− margin-left: 88rem;
6461− margin-right: 88rem; }
6462−
6463−.p-88 {
6464− padding: 88rem; }
6465−
6466−.pt-88 {
6467− padding-top: 88rem; }
6468−
6469−.pb-88 {
6470− padding-bottom: 88rem; }
6471−
6472−.pl-88 {
6473− padding-left: 88rem; }
6474−
6475−.pr-88 {
6476− padding-right: 88rem; }
6477−
6478−.pv-88 {
6479− padding-top: 88rem;
6480− padding-bottom: 88rem; }
6481−
6482−.ph-88 {
6483− padding-left: 88rem;
6484− padding-right: 88rem; }
6485−
6486−.w-89 {
6487− width: 89rem; }
6488−
6489−.h-89 {
6490− height: 89rem; }
6491−
6492−.m-89 {
6493− margin: 89rem; }
6494−
6495−.mt-89 {
6496− margin-top: 89rem; }
6497−
6498−.mb-89 {
6499− margin-bottom: 89rem; }
6500−
6501−.ml-89 {
6502− margin-left: 89rem; }
6503−
6504−.mr-89 {
6505− margin-right: 89rem; }
6506−
6507−.mv-89 {
6508− margin-top: 89rem;
6509− margin-bottom: 89rem; }
6510−
6511−.mh-89 {
6512− margin-left: 89rem;
6513− margin-right: 89rem; }
6514−
6515−.p-89 {
6516− padding: 89rem; }
6517−
6518−.pt-89 {
6519− padding-top: 89rem; }
6520−
6521−.pb-89 {
6522− padding-bottom: 89rem; }
6523−
6524−.pl-89 {
6525− padding-left: 89rem; }
6526−
6527−.pr-89 {
6528− padding-right: 89rem; }
6529−
6530−.pv-89 {
6531− padding-top: 89rem;
6532− padding-bottom: 89rem; }
6533−
6534−.ph-89 {
6535− padding-left: 89rem;
6536− padding-right: 89rem; }
6537−
6538−.w-90 {
6539− width: 90rem; }
6540−
6541−.h-90 {
6542− height: 90rem; }
6543−
6544−.m-90 {
6545− margin: 90rem; }
6546−
6547−.mt-90 {
6548− margin-top: 90rem; }
6549−
6550−.mb-90 {
6551− margin-bottom: 90rem; }
6552−
6553−.ml-90 {
6554− margin-left: 90rem; }
6555−
6556−.mr-90 {
6557− margin-right: 90rem; }
6558−
6559−.mv-90 {
6560− margin-top: 90rem;
6561− margin-bottom: 90rem; }
6562−
6563−.mh-90 {
6564− margin-left: 90rem;
6565− margin-right: 90rem; }
6566−
6567−.p-90 {
6568− padding: 90rem; }
6569−
6570−.pt-90 {
6571− padding-top: 90rem; }
6572−
6573−.pb-90 {
6574− padding-bottom: 90rem; }
6575−
6576−.pl-90 {
6577− padding-left: 90rem; }
6578−
6579−.pr-90 {
6580− padding-right: 90rem; }
6581−
6582−.pv-90 {
6583− padding-top: 90rem;
6584− padding-bottom: 90rem; }
6585−
6586−.ph-90 {
6587− padding-left: 90rem;
6588− padding-right: 90rem; }
6589−
6590−.w-91 {
6591− width: 91rem; }
6592−
6593−.h-91 {
6594− height: 91rem; }
6595−
6596−.m-91 {
6597− margin: 91rem; }
6598−
6599−.mt-91 {
6600− margin-top: 91rem; }
6601−
6602−.mb-91 {
6603− margin-bottom: 91rem; }
6604−
6605−.ml-91 {
6606− margin-left: 91rem; }
6607−
6608−.mr-91 {
6609− margin-right: 91rem; }
6610−
6611−.mv-91 {
6612− margin-top: 91rem;
6613− margin-bottom: 91rem; }
6614−
6615−.mh-91 {
6616− margin-left: 91rem;
6617− margin-right: 91rem; }
6618−
6619−.p-91 {
6620− padding: 91rem; }
6621−
6622−.pt-91 {
6623− padding-top: 91rem; }
6624−
6625−.pb-91 {
6626− padding-bottom: 91rem; }
6627−
6628−.pl-91 {
6629− padding-left: 91rem; }
6630−
6631−.pr-91 {
6632− padding-right: 91rem; }
6633−
6634−.pv-91 {
6635− padding-top: 91rem;
6636− padding-bottom: 91rem; }
6637−
6638−.ph-91 {
6639− padding-left: 91rem;
6640− padding-right: 91rem; }
6641−
6642−.w-92 {
6643− width: 92rem; }
6644−
6645−.h-92 {
6646− height: 92rem; }
6647−
6648−.m-92 {
6649− margin: 92rem; }
6650−
6651−.mt-92 {
6652− margin-top: 92rem; }
6653−
6654−.mb-92 {
6655− margin-bottom: 92rem; }
6656−
6657−.ml-92 {
6658− margin-left: 92rem; }
6659−
6660−.mr-92 {
6661− margin-right: 92rem; }
6662−
6663−.mv-92 {
6664− margin-top: 92rem;
6665− margin-bottom: 92rem; }
6666−
6667−.mh-92 {
6668− margin-left: 92rem;
6669− margin-right: 92rem; }
6670−
6671−.p-92 {
6672− padding: 92rem; }
6673−
6674−.pt-92 {
6675− padding-top: 92rem; }
6676−
6677−.pb-92 {
6678− padding-bottom: 92rem; }
6679−
6680−.pl-92 {
6681− padding-left: 92rem; }
6682−
6683−.pr-92 {
6684− padding-right: 92rem; }
6685−
6686−.pv-92 {
6687− padding-top: 92rem;
6688− padding-bottom: 92rem; }
6689−
6690−.ph-92 {
6691− padding-left: 92rem;
6692− padding-right: 92rem; }
6693−
6694−.w-93 {
6695− width: 93rem; }
6696−
6697−.h-93 {
6698− height: 93rem; }
6699−
6700−.m-93 {
6701− margin: 93rem; }
6702−
6703−.mt-93 {
6704− margin-top: 93rem; }
6705−
6706−.mb-93 {
6707− margin-bottom: 93rem; }
6708−
6709−.ml-93 {
6710− margin-left: 93rem; }
6711−
6712−.mr-93 {
6713− margin-right: 93rem; }
6714−
6715−.mv-93 {
6716− margin-top: 93rem;
6717− margin-bottom: 93rem; }
6718−
6719−.mh-93 {
6720− margin-left: 93rem;
6721− margin-right: 93rem; }
6722−
6723−.p-93 {
6724− padding: 93rem; }
6725−
6726−.pt-93 {
6727− padding-top: 93rem; }
6728−
6729−.pb-93 {
6730− padding-bottom: 93rem; }
6731−
6732−.pl-93 {
6733− padding-left: 93rem; }
6734−
6735−.pr-93 {
6736− padding-right: 93rem; }
6737−
6738−.pv-93 {
6739− padding-top: 93rem;
6740− padding-bottom: 93rem; }
6741−
6742−.ph-93 {
6743− padding-left: 93rem;
6744− padding-right: 93rem; }
6745−
6746−.w-94 {
6747− width: 94rem; }
6748−
6749−.h-94 {
6750− height: 94rem; }
6751−
6752−.m-94 {
6753− margin: 94rem; }
6754−
6755−.mt-94 {
6756− margin-top: 94rem; }
6757−
6758−.mb-94 {
6759− margin-bottom: 94rem; }
6760−
6761−.ml-94 {
6762− margin-left: 94rem; }
6763−
6764−.mr-94 {
6765− margin-right: 94rem; }
6766−
6767−.mv-94 {
6768− margin-top: 94rem;
6769− margin-bottom: 94rem; }
6770−
6771−.mh-94 {
6772− margin-left: 94rem;
6773− margin-right: 94rem; }
6774−
6775−.p-94 {
6776− padding: 94rem; }
6777−
6778−.pt-94 {
6779− padding-top: 94rem; }
6780−
6781−.pb-94 {
6782− padding-bottom: 94rem; }
6783−
6784−.pl-94 {
6785− padding-left: 94rem; }
6786−
6787−.pr-94 {
6788− padding-right: 94rem; }
6789−
6790−.pv-94 {
6791− padding-top: 94rem;
6792− padding-bottom: 94rem; }
6793−
6794−.ph-94 {
6795− padding-left: 94rem;
6796− padding-right: 94rem; }
6797−
6798−.w-95 {
6799− width: 95rem; }
6800−
6801−.h-95 {
6802− height: 95rem; }
6803−
6804−.m-95 {
6805− margin: 95rem; }
6806−
6807−.mt-95 {
6808− margin-top: 95rem; }
6809−
6810−.mb-95 {
6811− margin-bottom: 95rem; }
6812−
6813−.ml-95 {
6814− margin-left: 95rem; }
6815−
6816−.mr-95 {
6817− margin-right: 95rem; }
6818−
6819−.mv-95 {
6820− margin-top: 95rem;
6821− margin-bottom: 95rem; }
6822−
6823−.mh-95 {
6824− margin-left: 95rem;
6825− margin-right: 95rem; }
6826−
6827−.p-95 {
6828− padding: 95rem; }
6829−
6830−.pt-95 {
6831− padding-top: 95rem; }
6832−
6833−.pb-95 {
6834− padding-bottom: 95rem; }
6835−
6836−.pl-95 {
6837− padding-left: 95rem; }
6838−
6839−.pr-95 {
6840− padding-right: 95rem; }
6841−
6842−.pv-95 {
6843− padding-top: 95rem;
6844− padding-bottom: 95rem; }
6845−
6846−.ph-95 {
6847− padding-left: 95rem;
6848− padding-right: 95rem; }
6849−
6850−.w-96 {
6851− width: 96rem; }
6852−
6853−.h-96 {
6854− height: 96rem; }
6855−
6856−.m-96 {
6857− margin: 96rem; }
6858−
6859−.mt-96 {
6860− margin-top: 96rem; }
6861−
6862−.mb-96 {
6863− margin-bottom: 96rem; }
6864−
6865−.ml-96 {
6866− margin-left: 96rem; }
6867−
6868−.mr-96 {
6869− margin-right: 96rem; }
6870−
6871−.mv-96 {
6872− margin-top: 96rem;
6873− margin-bottom: 96rem; }
6874−
6875−.mh-96 {
6876− margin-left: 96rem;
6877− margin-right: 96rem; }
6878−
6879−.p-96 {
6880− padding: 96rem; }
6881−
6882−.pt-96 {
6883− padding-top: 96rem; }
6884−
6885−.pb-96 {
6886− padding-bottom: 96rem; }
6887−
6888−.pl-96 {
6889− padding-left: 96rem; }
6890−
6891−.pr-96 {
6892− padding-right: 96rem; }
6893−
6894−.pv-96 {
6895− padding-top: 96rem;
6896− padding-bottom: 96rem; }
6897−
6898−.ph-96 {
6899− padding-left: 96rem;
6900− padding-right: 96rem; }
6901−
6902−.w-97 {
6903− width: 97rem; }
6904−
6905−.h-97 {
6906− height: 97rem; }
6907−
6908−.m-97 {
6909− margin: 97rem; }
6910−
6911−.mt-97 {
6912− margin-top: 97rem; }
6913−
6914−.mb-97 {
6915− margin-bottom: 97rem; }
6916−
6917−.ml-97 {
6918− margin-left: 97rem; }
6919−
6920−.mr-97 {
6921− margin-right: 97rem; }
6922−
6923−.mv-97 {
6924− margin-top: 97rem;
6925− margin-bottom: 97rem; }
6926−
6927−.mh-97 {
6928− margin-left: 97rem;
6929− margin-right: 97rem; }
6930−
6931−.p-97 {
6932− padding: 97rem; }
6933−
6934−.pt-97 {
6935− padding-top: 97rem; }
6936−
6937−.pb-97 {
6938− padding-bottom: 97rem; }
6939−
6940−.pl-97 {
6941− padding-left: 97rem; }
6942−
6943−.pr-97 {
6944− padding-right: 97rem; }
6945−
6946−.pv-97 {
6947− padding-top: 97rem;
6948− padding-bottom: 97rem; }
6949−
6950−.ph-97 {
6951− padding-left: 97rem;
6952− padding-right: 97rem; }
6953−
6954−.w-98 {
6955− width: 98rem; }
6956−
6957−.h-98 {
6958− height: 98rem; }
6959−
6960−.m-98 {
6961− margin: 98rem; }
6962−
6963−.mt-98 {
6964− margin-top: 98rem; }
6965−
6966−.mb-98 {
6967− margin-bottom: 98rem; }
6968−
6969−.ml-98 {
6970− margin-left: 98rem; }
6971−
6972−.mr-98 {
6973− margin-right: 98rem; }
6974−
6975−.mv-98 {
6976− margin-top: 98rem;
6977− margin-bottom: 98rem; }
6978−
6979−.mh-98 {
6980− margin-left: 98rem;
6981− margin-right: 98rem; }
6982−
6983−.p-98 {
6984− padding: 98rem; }
6985−
6986−.pt-98 {
6987− padding-top: 98rem; }
6988−
6989−.pb-98 {
6990− padding-bottom: 98rem; }
6991−
6992−.pl-98 {
6993− padding-left: 98rem; }
6994−
6995−.pr-98 {
6996− padding-right: 98rem; }
6997−
6998−.pv-98 {
6999− padding-top: 98rem;
7000− padding-bottom: 98rem; }
7001−
7002−.ph-98 {
7003− padding-left: 98rem;
7004− padding-right: 98rem; }
7005−
7006−.w-99 {
7007− width: 99rem; }
7008−
7009−.h-99 {
7010− height: 99rem; }
7011−
7012−.m-99 {
7013− margin: 99rem; }
7014−
7015−.mt-99 {
7016− margin-top: 99rem; }
7017−
7018−.mb-99 {
7019− margin-bottom: 99rem; }
7020−
7021−.ml-99 {
7022− margin-left: 99rem; }
7023−
7024−.mr-99 {
7025− margin-right: 99rem; }
7026−
7027−.mv-99 {
7028− margin-top: 99rem;
7029− margin-bottom: 99rem; }
7030−
7031−.mh-99 {
7032− margin-left: 99rem;
7033− margin-right: 99rem; }
7034−
7035−.p-99 {
7036− padding: 99rem; }
7037−
7038−.pt-99 {
7039− padding-top: 99rem; }
7040−
7041−.pb-99 {
7042− padding-bottom: 99rem; }
7043−
7044−.pl-99 {
7045− padding-left: 99rem; }
7046−
7047−.pr-99 {
7048− padding-right: 99rem; }
7049−
7050−.pv-99 {
7051− padding-top: 99rem;
7052− padding-bottom: 99rem; }
7053−
7054−.ph-99 {
7055− padding-left: 99rem;
7056− padding-right: 99rem; }
7057−
7058−@media only screen and (min-width: 480) {
7059− .md-mt-0 {
7060− margin-top: 0rem; }
7061− .md-mb-0 {
7062− margin-bottom: 0rem; }
7063− .md-ml-0 {
7064− margin-left: 0rem; }
7065− .md-mr-0 {
7066− margin-right: 0rem; }
7067− .md-mv-0 {
7068− margin-top: 0rem;
7069− margin-bottom: 0rem; }
7070− .md-mh-0 {
7071− margin-left: 0rem;
7072− margin-right: 0rem; }
7073− .md-p-0 {
7074− padding: 0rem; }
7075− .md-pt-0 {
7076− padding-top: 0rem; }
7077− .md-pb-0 {
7078− padding-bottom: 0rem; }
7079− .md-pl-0 {
7080− padding-left: 0rem; }
7081− .md-pr-0 {
7082− padding-right: 0rem; }
7083− .md-pv-0 {
7084− padding-top: 0rem;
7085− padding-bottom: 0rem; }
7086− .md-ph-0 {
7087− padding-left: 0rem;
7088− padding-right: 0rem; }
7089− .md-mt-1 {
7090− margin-top: 1rem; }
7091− .md-mb-1 {
7092− margin-bottom: 1rem; }
7093− .md-ml-1 {
7094− margin-left: 1rem; }
7095− .md-mr-1 {
7096− margin-right: 1rem; }
7097− .md-mv-1 {
7098− margin-top: 1rem;
7099− margin-bottom: 1rem; }
7100− .md-mh-1 {
7101− margin-left: 1rem;
7102− margin-right: 1rem; }
7103− .md-p-1 {
7104− padding: 1rem; }
7105− .md-pt-1 {
7106− padding-top: 1rem; }
7107− .md-pb-1 {
7108− padding-bottom: 1rem; }
7109− .md-pl-1 {
7110− padding-left: 1rem; }
7111− .md-pr-1 {
7112− padding-right: 1rem; }
7113− .md-pv-1 {
7114− padding-top: 1rem;
7115− padding-bottom: 1rem; }
7116− .md-ph-1 {
7117− padding-left: 1rem;
7118− padding-right: 1rem; }
7119− .md-mt-2 {
7120− margin-top: 2rem; }
7121− .md-mb-2 {
7122− margin-bottom: 2rem; }
7123− .md-ml-2 {
7124− margin-left: 2rem; }
7125− .md-mr-2 {
7126− margin-right: 2rem; }
7127− .md-mv-2 {
7128− margin-top: 2rem;
7129− margin-bottom: 2rem; }
7130− .md-mh-2 {
7131− margin-left: 2rem;
7132− margin-right: 2rem; }
7133− .md-p-2 {
7134− padding: 2rem; }
7135− .md-pt-2 {
7136− padding-top: 2rem; }
7137− .md-pb-2 {
7138− padding-bottom: 2rem; }
7139− .md-pl-2 {
7140− padding-left: 2rem; }
7141− .md-pr-2 {
7142− padding-right: 2rem; }
7143− .md-pv-2 {
7144− padding-top: 2rem;
7145− padding-bottom: 2rem; }
7146− .md-ph-2 {
7147− padding-left: 2rem;
7148− padding-right: 2rem; }
7149− .md-mt-3 {
7150− margin-top: 3rem; }
7151− .md-mb-3 {
7152− margin-bottom: 3rem; }
7153− .md-ml-3 {
7154− margin-left: 3rem; }
7155− .md-mr-3 {
7156− margin-right: 3rem; }
7157− .md-mv-3 {
7158− margin-top: 3rem;
7159− margin-bottom: 3rem; }
7160− .md-mh-3 {
7161− margin-left: 3rem;
7162− margin-right: 3rem; }
7163− .md-p-3 {
7164− padding: 3rem; }
7165− .md-pt-3 {
7166− padding-top: 3rem; }
7167− .md-pb-3 {
7168− padding-bottom: 3rem; }
7169− .md-pl-3 {
7170− padding-left: 3rem; }
7171− .md-pr-3 {
7172− padding-right: 3rem; }
7173− .md-pv-3 {
7174− padding-top: 3rem;
7175− padding-bottom: 3rem; }
7176− .md-ph-3 {
7177− padding-left: 3rem;
7178− padding-right: 3rem; }
7179− .md-mt-4 {
7180− margin-top: 4rem; }
7181− .md-mb-4 {
7182− margin-bottom: 4rem; }
7183− .md-ml-4 {
7184− margin-left: 4rem; }
7185− .md-mr-4 {
7186− margin-right: 4rem; }
7187− .md-mv-4 {
7188− margin-top: 4rem;
7189− margin-bottom: 4rem; }
7190− .md-mh-4 {
7191− margin-left: 4rem;
7192− margin-right: 4rem; }
7193− .md-p-4 {
7194− padding: 4rem; }
7195− .md-pt-4 {
7196− padding-top: 4rem; }
7197− .md-pb-4 {
7198− padding-bottom: 4rem; }
7199− .md-pl-4 {
7200− padding-left: 4rem; }
7201− .md-pr-4 {
7202− padding-right: 4rem; }
7203− .md-pv-4 {
7204− padding-top: 4rem;
7205− padding-bottom: 4rem; }
7206− .md-ph-4 {
7207− padding-left: 4rem;
7208− padding-right: 4rem; }
7209− .md-mt-5 {
7210− margin-top: 5rem; }
7211− .md-mb-5 {
7212− margin-bottom: 5rem; }
7213− .md-ml-5 {
7214− margin-left: 5rem; }
7215− .md-mr-5 {
7216− margin-right: 5rem; }
7217− .md-mv-5 {
7218− margin-top: 5rem;
7219− margin-bottom: 5rem; }
7220− .md-mh-5 {
7221− margin-left: 5rem;
7222− margin-right: 5rem; }
7223− .md-p-5 {
7224− padding: 5rem; }
7225− .md-pt-5 {
7226− padding-top: 5rem; }
7227− .md-pb-5 {
7228− padding-bottom: 5rem; }
7229− .md-pl-5 {
7230− padding-left: 5rem; }
7231− .md-pr-5 {
7232− padding-right: 5rem; }
7233− .md-pv-5 {
7234− padding-top: 5rem;
7235− padding-bottom: 5rem; }
7236− .md-ph-5 {
7237− padding-left: 5rem;
7238− padding-right: 5rem; }
7239− .md-mt-6 {
7240− margin-top: 6rem; }
7241− .md-mb-6 {
7242− margin-bottom: 6rem; }
7243− .md-ml-6 {
7244− margin-left: 6rem; }
7245− .md-mr-6 {
7246− margin-right: 6rem; }
7247− .md-mv-6 {
7248− margin-top: 6rem;
7249− margin-bottom: 6rem; }
7250− .md-mh-6 {
7251− margin-left: 6rem;
7252− margin-right: 6rem; }
7253− .md-p-6 {
7254− padding: 6rem; }
7255− .md-pt-6 {
7256− padding-top: 6rem; }
7257− .md-pb-6 {
7258− padding-bottom: 6rem; }
7259− .md-pl-6 {
7260− padding-left: 6rem; }
7261− .md-pr-6 {
7262− padding-right: 6rem; }
7263− .md-pv-6 {
7264− padding-top: 6rem;
7265− padding-bottom: 6rem; }
7266− .md-ph-6 {
7267− padding-left: 6rem;
7268− padding-right: 6rem; }
7269− .md-mt-7 {
7270− margin-top: 7rem; }
7271− .md-mb-7 {
7272− margin-bottom: 7rem; }
7273− .md-ml-7 {
7274− margin-left: 7rem; }
7275− .md-mr-7 {
7276− margin-right: 7rem; }
7277− .md-mv-7 {
7278− margin-top: 7rem;
7279− margin-bottom: 7rem; }
7280− .md-mh-7 {
7281− margin-left: 7rem;
7282− margin-right: 7rem; }
7283− .md-p-7 {
7284− padding: 7rem; }
7285− .md-pt-7 {
7286− padding-top: 7rem; }
7287− .md-pb-7 {
7288− padding-bottom: 7rem; }
7289− .md-pl-7 {
7290− padding-left: 7rem; }
7291− .md-pr-7 {
7292− padding-right: 7rem; }
7293− .md-pv-7 {
7294− padding-top: 7rem;
7295− padding-bottom: 7rem; }
7296− .md-ph-7 {
7297− padding-left: 7rem;
7298− padding-right: 7rem; }
7299− .md-mt-8 {
7300− margin-top: 8rem; }
7301− .md-mb-8 {
7302− margin-bottom: 8rem; }
7303− .md-ml-8 {
7304− margin-left: 8rem; }
7305− .md-mr-8 {
7306− margin-right: 8rem; }
7307− .md-mv-8 {
7308− margin-top: 8rem;
7309− margin-bottom: 8rem; }
7310− .md-mh-8 {
7311− margin-left: 8rem;
7312− margin-right: 8rem; }
7313− .md-p-8 {
7314− padding: 8rem; }
7315− .md-pt-8 {
7316− padding-top: 8rem; }
7317− .md-pb-8 {
7318− padding-bottom: 8rem; }
7319− .md-pl-8 {
7320− padding-left: 8rem; }
7321− .md-pr-8 {
7322− padding-right: 8rem; }
7323− .md-pv-8 {
7324− padding-top: 8rem;
7325− padding-bottom: 8rem; }
7326− .md-ph-8 {
7327− padding-left: 8rem;
7328− padding-right: 8rem; }
7329− .md-mt-9 {
7330− margin-top: 9rem; }
7331− .md-mb-9 {
7332− margin-bottom: 9rem; }
7333− .md-ml-9 {
7334− margin-left: 9rem; }
7335− .md-mr-9 {
7336− margin-right: 9rem; }
7337− .md-mv-9 {
7338− margin-top: 9rem;
7339− margin-bottom: 9rem; }
7340− .md-mh-9 {
7341− margin-left: 9rem;
7342− margin-right: 9rem; }
7343− .md-p-9 {
7344− padding: 9rem; }
7345− .md-pt-9 {
7346− padding-top: 9rem; }
7347− .md-pb-9 {
7348− padding-bottom: 9rem; }
7349− .md-pl-9 {
7350− padding-left: 9rem; }
7351− .md-pr-9 {
7352− padding-right: 9rem; }
7353− .md-pv-9 {
7354− padding-top: 9rem;
7355− padding-bottom: 9rem; }
7356− .md-ph-9 {
7357− padding-left: 9rem;
7358− padding-right: 9rem; }
7359− .md-mt-10 {
7360− margin-top: 10rem; }
7361− .md-mb-10 {
7362− margin-bottom: 10rem; }
7363− .md-ml-10 {
7364− margin-left: 10rem; }
7365− .md-mr-10 {
7366− margin-right: 10rem; }
7367− .md-mv-10 {
7368− margin-top: 10rem;
7369− margin-bottom: 10rem; }
7370− .md-mh-10 {
7371− margin-left: 10rem;
7372− margin-right: 10rem; }
7373− .md-p-10 {
7374− padding: 10rem; }
7375− .md-pt-10 {
7376− padding-top: 10rem; }
7377− .md-pb-10 {
7378− padding-bottom: 10rem; }
7379− .md-pl-10 {
7380− padding-left: 10rem; }
7381− .md-pr-10 {
7382− padding-right: 10rem; }
7383− .md-pv-10 {
7384− padding-top: 10rem;
7385− padding-bottom: 10rem; }
7386− .md-ph-10 {
7387− padding-left: 10rem;
7388− padding-right: 10rem; }
7389− .md-mt-11 {
7390− margin-top: 11rem; }
7391− .md-mb-11 {
7392− margin-bottom: 11rem; }
7393− .md-ml-11 {
7394− margin-left: 11rem; }
7395− .md-mr-11 {
7396− margin-right: 11rem; }
7397− .md-mv-11 {
7398− margin-top: 11rem;
7399− margin-bottom: 11rem; }
7400− .md-mh-11 {
7401− margin-left: 11rem;
7402− margin-right: 11rem; }
7403− .md-p-11 {
7404− padding: 11rem; }
7405− .md-pt-11 {
7406− padding-top: 11rem; }
7407− .md-pb-11 {
7408− padding-bottom: 11rem; }
7409− .md-pl-11 {
7410− padding-left: 11rem; }
7411− .md-pr-11 {
7412− padding-right: 11rem; }
7413− .md-pv-11 {
7414− padding-top: 11rem;
7415− padding-bottom: 11rem; }
7416− .md-ph-11 {
7417− padding-left: 11rem;
7418− padding-right: 11rem; }
7419− .md-mt-12 {
7420− margin-top: 12rem; }
7421− .md-mb-12 {
7422− margin-bottom: 12rem; }
7423− .md-ml-12 {
7424− margin-left: 12rem; }
7425− .md-mr-12 {
7426− margin-right: 12rem; }
7427− .md-mv-12 {
7428− margin-top: 12rem;
7429− margin-bottom: 12rem; }
7430− .md-mh-12 {
7431− margin-left: 12rem;
7432− margin-right: 12rem; }
7433− .md-p-12 {
7434− padding: 12rem; }
7435− .md-pt-12 {
7436− padding-top: 12rem; }
7437− .md-pb-12 {
7438− padding-bottom: 12rem; }
7439− .md-pl-12 {
7440− padding-left: 12rem; }
7441− .md-pr-12 {
7442− padding-right: 12rem; }
7443− .md-pv-12 {
7444− padding-top: 12rem;
7445− padding-bottom: 12rem; }
7446− .md-ph-12 {
7447− padding-left: 12rem;
7448− padding-right: 12rem; }
7449− .md-mt-13 {
7450− margin-top: 13rem; }
7451− .md-mb-13 {
7452− margin-bottom: 13rem; }
7453− .md-ml-13 {
7454− margin-left: 13rem; }
7455− .md-mr-13 {
7456− margin-right: 13rem; }
7457− .md-mv-13 {
7458− margin-top: 13rem;
7459− margin-bottom: 13rem; }
7460− .md-mh-13 {
7461− margin-left: 13rem;
7462− margin-right: 13rem; }
7463− .md-p-13 {
7464− padding: 13rem; }
7465− .md-pt-13 {
7466− padding-top: 13rem; }
7467− .md-pb-13 {
7468− padding-bottom: 13rem; }
7469− .md-pl-13 {
7470− padding-left: 13rem; }
7471− .md-pr-13 {
7472− padding-right: 13rem; }
7473− .md-pv-13 {
7474− padding-top: 13rem;
7475− padding-bottom: 13rem; }
7476− .md-ph-13 {
7477− padding-left: 13rem;
7478− padding-right: 13rem; }
7479− .md-mt-14 {
7480− margin-top: 14rem; }
7481− .md-mb-14 {
7482− margin-bottom: 14rem; }
7483− .md-ml-14 {
7484− margin-left: 14rem; }
7485− .md-mr-14 {
7486− margin-right: 14rem; }
7487− .md-mv-14 {
7488− margin-top: 14rem;
7489− margin-bottom: 14rem; }
7490− .md-mh-14 {
7491− margin-left: 14rem;
7492− margin-right: 14rem; }
7493− .md-p-14 {
7494− padding: 14rem; }
7495− .md-pt-14 {
7496− padding-top: 14rem; }
7497− .md-pb-14 {
7498− padding-bottom: 14rem; }
7499− .md-pl-14 {
7500− padding-left: 14rem; }
7501− .md-pr-14 {
7502− padding-right: 14rem; }
7503− .md-pv-14 {
7504− padding-top: 14rem;
7505− padding-bottom: 14rem; }
7506− .md-ph-14 {
7507− padding-left: 14rem;
7508− padding-right: 14rem; }
7509− .md-mt-15 {
7510− margin-top: 15rem; }
7511− .md-mb-15 {
7512− margin-bottom: 15rem; }
7513− .md-ml-15 {
7514− margin-left: 15rem; }
7515− .md-mr-15 {
7516− margin-right: 15rem; }
7517− .md-mv-15 {
7518− margin-top: 15rem;
7519− margin-bottom: 15rem; }
7520− .md-mh-15 {
7521− margin-left: 15rem;
7522− margin-right: 15rem; }
7523− .md-p-15 {
7524− padding: 15rem; }
7525− .md-pt-15 {
7526− padding-top: 15rem; }
7527− .md-pb-15 {
7528− padding-bottom: 15rem; }
7529− .md-pl-15 {
7530− padding-left: 15rem; }
7531− .md-pr-15 {
7532− padding-right: 15rem; }
7533− .md-pv-15 {
7534− padding-top: 15rem;
7535− padding-bottom: 15rem; }
7536− .md-ph-15 {
7537− padding-left: 15rem;
7538− padding-right: 15rem; }
7539− .md-mt-16 {
7540− margin-top: 16rem; }
7541− .md-mb-16 {
7542− margin-bottom: 16rem; }
7543− .md-ml-16 {
7544− margin-left: 16rem; }
7545− .md-mr-16 {
7546− margin-right: 16rem; }
7547− .md-mv-16 {
7548− margin-top: 16rem;
7549− margin-bottom: 16rem; }
7550− .md-mh-16 {
7551− margin-left: 16rem;
7552− margin-right: 16rem; }
7553− .md-p-16 {
7554− padding: 16rem; }
7555− .md-pt-16 {
7556− padding-top: 16rem; }
7557− .md-pb-16 {
7558− padding-bottom: 16rem; }
7559− .md-pl-16 {
7560− padding-left: 16rem; }
7561− .md-pr-16 {
7562− padding-right: 16rem; }
7563− .md-pv-16 {
7564− padding-top: 16rem;
7565− padding-bottom: 16rem; }
7566− .md-ph-16 {
7567− padding-left: 16rem;
7568− padding-right: 16rem; }
7569− .md-mt-17 {
7570− margin-top: 17rem; }
7571− .md-mb-17 {
7572− margin-bottom: 17rem; }
7573− .md-ml-17 {
7574− margin-left: 17rem; }
7575− .md-mr-17 {
7576− margin-right: 17rem; }
7577− .md-mv-17 {
7578− margin-top: 17rem;
7579− margin-bottom: 17rem; }
7580− .md-mh-17 {
7581− margin-left: 17rem;
7582− margin-right: 17rem; }
7583− .md-p-17 {
7584− padding: 17rem; }
7585− .md-pt-17 {
7586− padding-top: 17rem; }
7587− .md-pb-17 {
7588− padding-bottom: 17rem; }
7589− .md-pl-17 {
7590− padding-left: 17rem; }
7591− .md-pr-17 {
7592− padding-right: 17rem; }
7593− .md-pv-17 {
7594− padding-top: 17rem;
7595− padding-bottom: 17rem; }
7596− .md-ph-17 {
7597− padding-left: 17rem;
7598− padding-right: 17rem; }
7599− .md-mt-18 {
7600− margin-top: 18rem; }
7601− .md-mb-18 {
7602− margin-bottom: 18rem; }
7603− .md-ml-18 {
7604− margin-left: 18rem; }
7605− .md-mr-18 {
7606− margin-right: 18rem; }
7607− .md-mv-18 {
7608− margin-top: 18rem;
7609− margin-bottom: 18rem; }
7610− .md-mh-18 {
7611− margin-left: 18rem;
7612− margin-right: 18rem; }
7613− .md-p-18 {
7614− padding: 18rem; }
7615− .md-pt-18 {
7616− padding-top: 18rem; }
7617− .md-pb-18 {
7618− padding-bottom: 18rem; }
7619− .md-pl-18 {
7620− padding-left: 18rem; }
7621− .md-pr-18 {
7622− padding-right: 18rem; }
7623− .md-pv-18 {
7624− padding-top: 18rem;
7625− padding-bottom: 18rem; }
7626− .md-ph-18 {
7627− padding-left: 18rem;
7628− padding-right: 18rem; }
7629− .md-mt-19 {
7630− margin-top: 19rem; }
7631− .md-mb-19 {
7632− margin-bottom: 19rem; }
7633− .md-ml-19 {
7634− margin-left: 19rem; }
7635− .md-mr-19 {
7636− margin-right: 19rem; }
7637− .md-mv-19 {
7638− margin-top: 19rem;
7639− margin-bottom: 19rem; }
7640− .md-mh-19 {
7641− margin-left: 19rem;
7642− margin-right: 19rem; }
7643− .md-p-19 {
7644− padding: 19rem; }
7645− .md-pt-19 {
7646− padding-top: 19rem; }
7647− .md-pb-19 {
7648− padding-bottom: 19rem; }
7649− .md-pl-19 {
7650− padding-left: 19rem; }
7651− .md-pr-19 {
7652− padding-right: 19rem; }
7653− .md-pv-19 {
7654− padding-top: 19rem;
7655− padding-bottom: 19rem; }
7656− .md-ph-19 {
7657− padding-left: 19rem;
7658− padding-right: 19rem; }
7659− .md-mt-20 {
7660− margin-top: 20rem; }
7661− .md-mb-20 {
7662− margin-bottom: 20rem; }
7663− .md-ml-20 {
7664− margin-left: 20rem; }
7665− .md-mr-20 {
7666− margin-right: 20rem; }
7667− .md-mv-20 {
7668− margin-top: 20rem;
7669− margin-bottom: 20rem; }
7670− .md-mh-20 {
7671− margin-left: 20rem;
7672− margin-right: 20rem; }
7673− .md-p-20 {
7674− padding: 20rem; }
7675− .md-pt-20 {
7676− padding-top: 20rem; }
7677− .md-pb-20 {
7678− padding-bottom: 20rem; }
7679− .md-pl-20 {
7680− padding-left: 20rem; }
7681− .md-pr-20 {
7682− padding-right: 20rem; }
7683− .md-pv-20 {
7684− padding-top: 20rem;
7685− padding-bottom: 20rem; }
7686− .md-ph-20 {
7687− padding-left: 20rem;
7688− padding-right: 20rem; }
7689− .md-mt-21 {
7690− margin-top: 21rem; }
7691− .md-mb-21 {
7692− margin-bottom: 21rem; }
7693− .md-ml-21 {
7694− margin-left: 21rem; }
7695− .md-mr-21 {
7696− margin-right: 21rem; }
7697− .md-mv-21 {
7698− margin-top: 21rem;
7699− margin-bottom: 21rem; }
7700− .md-mh-21 {
7701− margin-left: 21rem;
7702− margin-right: 21rem; }
7703− .md-p-21 {
7704− padding: 21rem; }
7705− .md-pt-21 {
7706− padding-top: 21rem; }
7707− .md-pb-21 {
7708− padding-bottom: 21rem; }
7709− .md-pl-21 {
7710− padding-left: 21rem; }
7711− .md-pr-21 {
7712− padding-right: 21rem; }
7713− .md-pv-21 {
7714− padding-top: 21rem;
7715− padding-bottom: 21rem; }
7716− .md-ph-21 {
7717− padding-left: 21rem;
7718− padding-right: 21rem; }
7719− .md-mt-22 {
7720− margin-top: 22rem; }
7721− .md-mb-22 {
7722− margin-bottom: 22rem; }
7723− .md-ml-22 {
7724− margin-left: 22rem; }
7725− .md-mr-22 {
7726− margin-right: 22rem; }
7727− .md-mv-22 {
7728− margin-top: 22rem;
7729− margin-bottom: 22rem; }
7730− .md-mh-22 {
7731− margin-left: 22rem;
7732− margin-right: 22rem; }
7733− .md-p-22 {
7734− padding: 22rem; }
7735− .md-pt-22 {
7736− padding-top: 22rem; }
7737− .md-pb-22 {
7738− padding-bottom: 22rem; }
7739− .md-pl-22 {
7740− padding-left: 22rem; }
7741− .md-pr-22 {
7742− padding-right: 22rem; }
7743− .md-pv-22 {
7744− padding-top: 22rem;
7745− padding-bottom: 22rem; }
7746− .md-ph-22 {
7747− padding-left: 22rem;
7748− padding-right: 22rem; }
7749− .md-mt-23 {
7750− margin-top: 23rem; }
7751− .md-mb-23 {
7752− margin-bottom: 23rem; }
7753− .md-ml-23 {
7754− margin-left: 23rem; }
7755− .md-mr-23 {
7756− margin-right: 23rem; }
7757− .md-mv-23 {
7758− margin-top: 23rem;
7759− margin-bottom: 23rem; }
7760− .md-mh-23 {
7761− margin-left: 23rem;
7762− margin-right: 23rem; }
7763− .md-p-23 {
7764− padding: 23rem; }
7765− .md-pt-23 {
7766− padding-top: 23rem; }
7767− .md-pb-23 {
7768− padding-bottom: 23rem; }
7769− .md-pl-23 {
7770− padding-left: 23rem; }
7771− .md-pr-23 {
7772− padding-right: 23rem; }
7773− .md-pv-23 {
7774− padding-top: 23rem;
7775− padding-bottom: 23rem; }
7776− .md-ph-23 {
7777− padding-left: 23rem;
7778− padding-right: 23rem; }
7779− .md-mt-24 {
7780− margin-top: 24rem; }
7781− .md-mb-24 {
7782− margin-bottom: 24rem; }
7783− .md-ml-24 {
7784− margin-left: 24rem; }
7785− .md-mr-24 {
7786− margin-right: 24rem; }
7787− .md-mv-24 {
7788− margin-top: 24rem;
7789− margin-bottom: 24rem; }
7790− .md-mh-24 {
7791− margin-left: 24rem;
7792− margin-right: 24rem; }
7793− .md-p-24 {
7794− padding: 24rem; }
7795− .md-pt-24 {
7796− padding-top: 24rem; }
7797− .md-pb-24 {
7798− padding-bottom: 24rem; }
7799− .md-pl-24 {
7800− padding-left: 24rem; }
7801− .md-pr-24 {
7802− padding-right: 24rem; }
7803− .md-pv-24 {
7804− padding-top: 24rem;
7805− padding-bottom: 24rem; }
7806− .md-ph-24 {
7807− padding-left: 24rem;
7808− padding-right: 24rem; }
7809− .md-mt-25 {
7810− margin-top: 25rem; }
7811− .md-mb-25 {
7812− margin-bottom: 25rem; }
7813− .md-ml-25 {
7814− margin-left: 25rem; }
7815− .md-mr-25 {
7816− margin-right: 25rem; }
7817− .md-mv-25 {
7818− margin-top: 25rem;
7819− margin-bottom: 25rem; }
7820− .md-mh-25 {
7821− margin-left: 25rem;
7822− margin-right: 25rem; }
7823− .md-p-25 {
7824− padding: 25rem; }
7825− .md-pt-25 {
7826− padding-top: 25rem; }
7827− .md-pb-25 {
7828− padding-bottom: 25rem; }
7829− .md-pl-25 {
7830− padding-left: 25rem; }
7831− .md-pr-25 {
7832− padding-right: 25rem; }
7833− .md-pv-25 {
7834− padding-top: 25rem;
7835− padding-bottom: 25rem; }
7836− .md-ph-25 {
7837− padding-left: 25rem;
7838− padding-right: 25rem; }
7839− .md-mt-26 {
7840− margin-top: 26rem; }
7841− .md-mb-26 {
7842− margin-bottom: 26rem; }
7843− .md-ml-26 {
7844− margin-left: 26rem; }
7845− .md-mr-26 {
7846− margin-right: 26rem; }
7847− .md-mv-26 {
7848− margin-top: 26rem;
7849− margin-bottom: 26rem; }
7850− .md-mh-26 {
7851− margin-left: 26rem;
7852− margin-right: 26rem; }
7853− .md-p-26 {
7854− padding: 26rem; }
7855− .md-pt-26 {
7856− padding-top: 26rem; }
7857− .md-pb-26 {
7858− padding-bottom: 26rem; }
7859− .md-pl-26 {
7860− padding-left: 26rem; }
7861− .md-pr-26 {
7862− padding-right: 26rem; }
7863− .md-pv-26 {
7864− padding-top: 26rem;
7865− padding-bottom: 26rem; }
7866− .md-ph-26 {
7867− padding-left: 26rem;
7868− padding-right: 26rem; }
7869− .md-mt-27 {
7870− margin-top: 27rem; }
7871− .md-mb-27 {
7872− margin-bottom: 27rem; }
7873− .md-ml-27 {
7874− margin-left: 27rem; }
7875− .md-mr-27 {
7876− margin-right: 27rem; }
7877− .md-mv-27 {
7878− margin-top: 27rem;
7879− margin-bottom: 27rem; }
7880− .md-mh-27 {
7881− margin-left: 27rem;
7882− margin-right: 27rem; }
7883− .md-p-27 {
7884− padding: 27rem; }
7885− .md-pt-27 {
7886− padding-top: 27rem; }
7887− .md-pb-27 {
7888− padding-bottom: 27rem; }
7889− .md-pl-27 {
7890− padding-left: 27rem; }
7891− .md-pr-27 {
7892− padding-right: 27rem; }
7893− .md-pv-27 {
7894− padding-top: 27rem;
7895− padding-bottom: 27rem; }
7896− .md-ph-27 {
7897− padding-left: 27rem;
7898− padding-right: 27rem; }
7899− .md-mt-28 {
7900− margin-top: 28rem; }
7901− .md-mb-28 {
7902− margin-bottom: 28rem; }
7903− .md-ml-28 {
7904− margin-left: 28rem; }
7905− .md-mr-28 {
7906− margin-right: 28rem; }
7907− .md-mv-28 {
7908− margin-top: 28rem;
7909− margin-bottom: 28rem; }
7910− .md-mh-28 {
7911− margin-left: 28rem;
7912− margin-right: 28rem; }
7913− .md-p-28 {
7914− padding: 28rem; }
7915− .md-pt-28 {
7916− padding-top: 28rem; }
7917− .md-pb-28 {
7918− padding-bottom: 28rem; }
7919− .md-pl-28 {
7920− padding-left: 28rem; }
7921− .md-pr-28 {
7922− padding-right: 28rem; }
7923− .md-pv-28 {
7924− padding-top: 28rem;
7925− padding-bottom: 28rem; }
7926− .md-ph-28 {
7927− padding-left: 28rem;
7928− padding-right: 28rem; }
7929− .md-mt-29 {
7930− margin-top: 29rem; }
7931− .md-mb-29 {
7932− margin-bottom: 29rem; }
7933− .md-ml-29 {
7934− margin-left: 29rem; }
7935− .md-mr-29 {
7936− margin-right: 29rem; }
7937− .md-mv-29 {
7938− margin-top: 29rem;
7939− margin-bottom: 29rem; }
7940− .md-mh-29 {
7941− margin-left: 29rem;
7942− margin-right: 29rem; }
7943− .md-p-29 {
7944− padding: 29rem; }
7945− .md-pt-29 {
7946− padding-top: 29rem; }
7947− .md-pb-29 {
7948− padding-bottom: 29rem; }
7949− .md-pl-29 {
7950− padding-left: 29rem; }
7951− .md-pr-29 {
7952− padding-right: 29rem; }
7953− .md-pv-29 {
7954− padding-top: 29rem;
7955− padding-bottom: 29rem; }
7956− .md-ph-29 {
7957− padding-left: 29rem;
7958− padding-right: 29rem; }
7959− .md-mt-30 {
7960− margin-top: 30rem; }
7961− .md-mb-30 {
7962− margin-bottom: 30rem; }
7963− .md-ml-30 {
7964− margin-left: 30rem; }
7965− .md-mr-30 {
7966− margin-right: 30rem; }
7967− .md-mv-30 {
7968− margin-top: 30rem;
7969− margin-bottom: 30rem; }
7970− .md-mh-30 {
7971− margin-left: 30rem;
7972− margin-right: 30rem; }
7973− .md-p-30 {
7974− padding: 30rem; }
7975− .md-pt-30 {
7976− padding-top: 30rem; }
7977− .md-pb-30 {
7978− padding-bottom: 30rem; }
7979− .md-pl-30 {
7980− padding-left: 30rem; }
7981− .md-pr-30 {
7982− padding-right: 30rem; }
7983− .md-pv-30 {
7984− padding-top: 30rem;
7985− padding-bottom: 30rem; }
7986− .md-ph-30 {
7987− padding-left: 30rem;
7988− padding-right: 30rem; }
7989− .md-mt-31 {
7990− margin-top: 31rem; }
7991− .md-mb-31 {
7992− margin-bottom: 31rem; }
7993− .md-ml-31 {
7994− margin-left: 31rem; }
7995− .md-mr-31 {
7996− margin-right: 31rem; }
7997− .md-mv-31 {
7998− margin-top: 31rem;
7999− margin-bottom: 31rem; }
8000− .md-mh-31 {
8001− margin-left: 31rem;
8002− margin-right: 31rem; }
8003− .md-p-31 {
8004− padding: 31rem; }
8005− .md-pt-31 {
8006− padding-top: 31rem; }
8007− .md-pb-31 {
8008− padding-bottom: 31rem; }
8009− .md-pl-31 {
8010− padding-left: 31rem; }
8011− .md-pr-31 {
8012− padding-right: 31rem; }
8013− .md-pv-31 {
8014− padding-top: 31rem;
8015− padding-bottom: 31rem; }
8016− .md-ph-31 {
8017− padding-left: 31rem;
8018− padding-right: 31rem; }
8019− .md-mt-32 {
8020− margin-top: 32rem; }
8021− .md-mb-32 {
8022− margin-bottom: 32rem; }
8023− .md-ml-32 {
8024− margin-left: 32rem; }
8025− .md-mr-32 {
8026− margin-right: 32rem; }
8027− .md-mv-32 {
8028− margin-top: 32rem;
8029− margin-bottom: 32rem; }
8030− .md-mh-32 {
8031− margin-left: 32rem;
8032− margin-right: 32rem; }
8033− .md-p-32 {
8034− padding: 32rem; }
8035− .md-pt-32 {
8036− padding-top: 32rem; }
8037− .md-pb-32 {
8038− padding-bottom: 32rem; }
8039− .md-pl-32 {
8040− padding-left: 32rem; }
8041− .md-pr-32 {
8042− padding-right: 32rem; }
8043− .md-pv-32 {
8044− padding-top: 32rem;
8045− padding-bottom: 32rem; }
8046− .md-ph-32 {
8047− padding-left: 32rem;
8048− padding-right: 32rem; }
8049− .md-mt-33 {
8050− margin-top: 33rem; }
8051− .md-mb-33 {
8052− margin-bottom: 33rem; }
8053− .md-ml-33 {
8054− margin-left: 33rem; }
8055− .md-mr-33 {
8056− margin-right: 33rem; }
8057− .md-mv-33 {
8058− margin-top: 33rem;
8059− margin-bottom: 33rem; }
8060− .md-mh-33 {
8061− margin-left: 33rem;
8062− margin-right: 33rem; }
8063− .md-p-33 {
8064− padding: 33rem; }
8065− .md-pt-33 {
8066− padding-top: 33rem; }
8067− .md-pb-33 {
8068− padding-bottom: 33rem; }
8069− .md-pl-33 {
8070− padding-left: 33rem; }
8071− .md-pr-33 {
8072− padding-right: 33rem; }
8073− .md-pv-33 {
8074− padding-top: 33rem;
8075− padding-bottom: 33rem; }
8076− .md-ph-33 {
8077− padding-left: 33rem;
8078− padding-right: 33rem; }
8079− .md-mt-34 {
8080− margin-top: 34rem; }
8081− .md-mb-34 {
8082− margin-bottom: 34rem; }
8083− .md-ml-34 {
8084− margin-left: 34rem; }
8085− .md-mr-34 {
8086− margin-right: 34rem; }
8087− .md-mv-34 {
8088− margin-top: 34rem;
8089− margin-bottom: 34rem; }
8090− .md-mh-34 {
8091− margin-left: 34rem;
8092− margin-right: 34rem; }
8093− .md-p-34 {
8094− padding: 34rem; }
8095− .md-pt-34 {
8096− padding-top: 34rem; }
8097− .md-pb-34 {
8098− padding-bottom: 34rem; }
8099− .md-pl-34 {
8100− padding-left: 34rem; }
8101− .md-pr-34 {
8102− padding-right: 34rem; }
8103− .md-pv-34 {
8104− padding-top: 34rem;
8105− padding-bottom: 34rem; }
8106− .md-ph-34 {
8107− padding-left: 34rem;
8108− padding-right: 34rem; }
8109− .md-mt-35 {
8110− margin-top: 35rem; }
8111− .md-mb-35 {
8112− margin-bottom: 35rem; }
8113− .md-ml-35 {
8114− margin-left: 35rem; }
8115− .md-mr-35 {
8116− margin-right: 35rem; }
8117− .md-mv-35 {
8118− margin-top: 35rem;
8119− margin-bottom: 35rem; }
8120− .md-mh-35 {
8121− margin-left: 35rem;
8122− margin-right: 35rem; }
8123− .md-p-35 {
8124− padding: 35rem; }
8125− .md-pt-35 {
8126− padding-top: 35rem; }
8127− .md-pb-35 {
8128− padding-bottom: 35rem; }
8129− .md-pl-35 {
8130− padding-left: 35rem; }
8131− .md-pr-35 {
8132− padding-right: 35rem; }
8133− .md-pv-35 {
8134− padding-top: 35rem;
8135− padding-bottom: 35rem; }
8136− .md-ph-35 {
8137− padding-left: 35rem;
8138− padding-right: 35rem; }
8139− .md-mt-36 {
8140− margin-top: 36rem; }
8141− .md-mb-36 {
8142− margin-bottom: 36rem; }
8143− .md-ml-36 {
8144− margin-left: 36rem; }
8145− .md-mr-36 {
8146− margin-right: 36rem; }
8147− .md-mv-36 {
8148− margin-top: 36rem;
8149− margin-bottom: 36rem; }
8150− .md-mh-36 {
8151− margin-left: 36rem;
8152− margin-right: 36rem; }
8153− .md-p-36 {
8154− padding: 36rem; }
8155− .md-pt-36 {
8156− padding-top: 36rem; }
8157− .md-pb-36 {
8158− padding-bottom: 36rem; }
8159− .md-pl-36 {
8160− padding-left: 36rem; }
8161− .md-pr-36 {
8162− padding-right: 36rem; }
8163− .md-pv-36 {
8164− padding-top: 36rem;
8165− padding-bottom: 36rem; }
8166− .md-ph-36 {
8167− padding-left: 36rem;
8168− padding-right: 36rem; }
8169− .md-mt-37 {
8170− margin-top: 37rem; }
8171− .md-mb-37 {
8172− margin-bottom: 37rem; }
8173− .md-ml-37 {
8174− margin-left: 37rem; }
8175− .md-mr-37 {
8176− margin-right: 37rem; }
8177− .md-mv-37 {
8178− margin-top: 37rem;
8179− margin-bottom: 37rem; }
8180− .md-mh-37 {
8181− margin-left: 37rem;
8182− margin-right: 37rem; }
8183− .md-p-37 {
8184− padding: 37rem; }
8185− .md-pt-37 {
8186− padding-top: 37rem; }
8187− .md-pb-37 {
8188− padding-bottom: 37rem; }
8189− .md-pl-37 {
8190− padding-left: 37rem; }
8191− .md-pr-37 {
8192− padding-right: 37rem; }
8193− .md-pv-37 {
8194− padding-top: 37rem;
8195− padding-bottom: 37rem; }
8196− .md-ph-37 {
8197− padding-left: 37rem;
8198− padding-right: 37rem; }
8199− .md-mt-38 {
8200− margin-top: 38rem; }
8201− .md-mb-38 {
8202− margin-bottom: 38rem; }
8203− .md-ml-38 {
8204− margin-left: 38rem; }
8205− .md-mr-38 {
8206− margin-right: 38rem; }
8207− .md-mv-38 {
8208− margin-top: 38rem;
8209− margin-bottom: 38rem; }
8210− .md-mh-38 {
8211− margin-left: 38rem;
8212− margin-right: 38rem; }
8213− .md-p-38 {
8214− padding: 38rem; }
8215− .md-pt-38 {
8216− padding-top: 38rem; }
8217− .md-pb-38 {
8218− padding-bottom: 38rem; }
8219− .md-pl-38 {
8220− padding-left: 38rem; }
8221− .md-pr-38 {
8222− padding-right: 38rem; }
8223− .md-pv-38 {
8224− padding-top: 38rem;
8225− padding-bottom: 38rem; }
8226− .md-ph-38 {
8227− padding-left: 38rem;
8228− padding-right: 38rem; }
8229− .md-mt-39 {
8230− margin-top: 39rem; }
8231− .md-mb-39 {
8232− margin-bottom: 39rem; }
8233− .md-ml-39 {
8234− margin-left: 39rem; }
8235− .md-mr-39 {
8236− margin-right: 39rem; }
8237− .md-mv-39 {
8238− margin-top: 39rem;
8239− margin-bottom: 39rem; }
8240− .md-mh-39 {
8241− margin-left: 39rem;
8242− margin-right: 39rem; }
8243− .md-p-39 {
8244− padding: 39rem; }
8245− .md-pt-39 {
8246− padding-top: 39rem; }
8247− .md-pb-39 {
8248− padding-bottom: 39rem; }
8249− .md-pl-39 {
8250− padding-left: 39rem; }
8251− .md-pr-39 {
8252− padding-right: 39rem; }
8253− .md-pv-39 {
8254− padding-top: 39rem;
8255− padding-bottom: 39rem; }
8256− .md-ph-39 {
8257− padding-left: 39rem;
8258− padding-right: 39rem; }
8259− .md-mt-40 {
8260− margin-top: 40rem; }
8261− .md-mb-40 {
8262− margin-bottom: 40rem; }
8263− .md-ml-40 {
8264− margin-left: 40rem; }
8265− .md-mr-40 {
8266− margin-right: 40rem; }
8267− .md-mv-40 {
8268− margin-top: 40rem;
8269− margin-bottom: 40rem; }
8270− .md-mh-40 {
8271− margin-left: 40rem;
8272− margin-right: 40rem; }
8273− .md-p-40 {
8274− padding: 40rem; }
8275− .md-pt-40 {
8276− padding-top: 40rem; }
8277− .md-pb-40 {
8278− padding-bottom: 40rem; }
8279− .md-pl-40 {
8280− padding-left: 40rem; }
8281− .md-pr-40 {
8282− padding-right: 40rem; }
8283− .md-pv-40 {
8284− padding-top: 40rem;
8285− padding-bottom: 40rem; }
8286− .md-ph-40 {
8287− padding-left: 40rem;
8288− padding-right: 40rem; }
8289− .md-mt-41 {
8290− margin-top: 41rem; }
8291− .md-mb-41 {
8292− margin-bottom: 41rem; }
8293− .md-ml-41 {
8294− margin-left: 41rem; }
8295− .md-mr-41 {
8296− margin-right: 41rem; }
8297− .md-mv-41 {
8298− margin-top: 41rem;
8299− margin-bottom: 41rem; }
8300− .md-mh-41 {
8301− margin-left: 41rem;
8302− margin-right: 41rem; }
8303− .md-p-41 {
8304− padding: 41rem; }
8305− .md-pt-41 {
8306− padding-top: 41rem; }
8307− .md-pb-41 {
8308− padding-bottom: 41rem; }
8309− .md-pl-41 {
8310− padding-left: 41rem; }
8311− .md-pr-41 {
8312− padding-right: 41rem; }
8313− .md-pv-41 {
8314− padding-top: 41rem;
8315− padding-bottom: 41rem; }
8316− .md-ph-41 {
8317− padding-left: 41rem;
8318− padding-right: 41rem; }
8319− .md-mt-42 {
8320− margin-top: 42rem; }
8321− .md-mb-42 {
8322− margin-bottom: 42rem; }
8323− .md-ml-42 {
8324− margin-left: 42rem; }
8325− .md-mr-42 {
8326− margin-right: 42rem; }
8327− .md-mv-42 {
8328− margin-top: 42rem;
8329− margin-bottom: 42rem; }
8330− .md-mh-42 {
8331− margin-left: 42rem;
8332− margin-right: 42rem; }
8333− .md-p-42 {
8334− padding: 42rem; }
8335− .md-pt-42 {
8336− padding-top: 42rem; }
8337− .md-pb-42 {
8338− padding-bottom: 42rem; }
8339− .md-pl-42 {
8340− padding-left: 42rem; }
8341− .md-pr-42 {
8342− padding-right: 42rem; }
8343− .md-pv-42 {
8344− padding-top: 42rem;
8345− padding-bottom: 42rem; }
8346− .md-ph-42 {
8347− padding-left: 42rem;
8348− padding-right: 42rem; }
8349− .md-mt-43 {
8350− margin-top: 43rem; }
8351− .md-mb-43 {
8352− margin-bottom: 43rem; }
8353− .md-ml-43 {
8354− margin-left: 43rem; }
8355− .md-mr-43 {
8356− margin-right: 43rem; }
8357− .md-mv-43 {
8358− margin-top: 43rem;
8359− margin-bottom: 43rem; }
8360− .md-mh-43 {
8361− margin-left: 43rem;
8362− margin-right: 43rem; }
8363− .md-p-43 {
8364− padding: 43rem; }
8365− .md-pt-43 {
8366− padding-top: 43rem; }
8367− .md-pb-43 {
8368− padding-bottom: 43rem; }
8369− .md-pl-43 {
8370− padding-left: 43rem; }
8371− .md-pr-43 {
8372− padding-right: 43rem; }
8373− .md-pv-43 {
8374− padding-top: 43rem;
8375− padding-bottom: 43rem; }
8376− .md-ph-43 {
8377− padding-left: 43rem;
8378− padding-right: 43rem; }
8379− .md-mt-44 {
8380− margin-top: 44rem; }
8381− .md-mb-44 {
8382− margin-bottom: 44rem; }
8383− .md-ml-44 {
8384− margin-left: 44rem; }
8385− .md-mr-44 {
8386− margin-right: 44rem; }
8387− .md-mv-44 {
8388− margin-top: 44rem;
8389− margin-bottom: 44rem; }
8390− .md-mh-44 {
8391− margin-left: 44rem;
8392− margin-right: 44rem; }
8393− .md-p-44 {
8394− padding: 44rem; }
8395− .md-pt-44 {
8396− padding-top: 44rem; }
8397− .md-pb-44 {
8398− padding-bottom: 44rem; }
8399− .md-pl-44 {
8400− padding-left: 44rem; }
8401− .md-pr-44 {
8402− padding-right: 44rem; }
8403− .md-pv-44 {
8404− padding-top: 44rem;
8405− padding-bottom: 44rem; }
8406− .md-ph-44 {
8407− padding-left: 44rem;
8408− padding-right: 44rem; }
8409− .md-mt-45 {
8410− margin-top: 45rem; }
8411− .md-mb-45 {
8412− margin-bottom: 45rem; }
8413− .md-ml-45 {
8414− margin-left: 45rem; }
8415− .md-mr-45 {
8416− margin-right: 45rem; }
8417− .md-mv-45 {
8418− margin-top: 45rem;
8419− margin-bottom: 45rem; }
8420− .md-mh-45 {
8421− margin-left: 45rem;
8422− margin-right: 45rem; }
8423− .md-p-45 {
8424− padding: 45rem; }
8425− .md-pt-45 {
8426− padding-top: 45rem; }
8427− .md-pb-45 {
8428− padding-bottom: 45rem; }
8429− .md-pl-45 {
8430− padding-left: 45rem; }
8431− .md-pr-45 {
8432− padding-right: 45rem; }
8433− .md-pv-45 {
8434− padding-top: 45rem;
8435− padding-bottom: 45rem; }
8436− .md-ph-45 {
8437− padding-left: 45rem;
8438− padding-right: 45rem; }
8439− .md-mt-46 {
8440− margin-top: 46rem; }
8441− .md-mb-46 {
8442− margin-bottom: 46rem; }
8443− .md-ml-46 {
8444− margin-left: 46rem; }
8445− .md-mr-46 {
8446− margin-right: 46rem; }
8447− .md-mv-46 {
8448− margin-top: 46rem;
8449− margin-bottom: 46rem; }
8450− .md-mh-46 {
8451− margin-left: 46rem;
8452− margin-right: 46rem; }
8453− .md-p-46 {
8454− padding: 46rem; }
8455− .md-pt-46 {
8456− padding-top: 46rem; }
8457− .md-pb-46 {
8458− padding-bottom: 46rem; }
8459− .md-pl-46 {
8460− padding-left: 46rem; }
8461− .md-pr-46 {
8462− padding-right: 46rem; }
8463− .md-pv-46 {
8464− padding-top: 46rem;
8465− padding-bottom: 46rem; }
8466− .md-ph-46 {
8467− padding-left: 46rem;
8468− padding-right: 46rem; }
8469− .md-mt-47 {
8470− margin-top: 47rem; }
8471− .md-mb-47 {
8472− margin-bottom: 47rem; }
8473− .md-ml-47 {
8474− margin-left: 47rem; }
8475− .md-mr-47 {
8476− margin-right: 47rem; }
8477− .md-mv-47 {
8478− margin-top: 47rem;
8479− margin-bottom: 47rem; }
8480− .md-mh-47 {
8481− margin-left: 47rem;
8482− margin-right: 47rem; }
8483− .md-p-47 {
8484− padding: 47rem; }
8485− .md-pt-47 {
8486− padding-top: 47rem; }
8487− .md-pb-47 {
8488− padding-bottom: 47rem; }
8489− .md-pl-47 {
8490− padding-left: 47rem; }
8491− .md-pr-47 {
8492− padding-right: 47rem; }
8493− .md-pv-47 {
8494− padding-top: 47rem;
8495− padding-bottom: 47rem; }
8496− .md-ph-47 {
8497− padding-left: 47rem;
8498− padding-right: 47rem; }
8499− .md-mt-48 {
8500− margin-top: 48rem; }
8501− .md-mb-48 {
8502− margin-bottom: 48rem; }
8503− .md-ml-48 {
8504− margin-left: 48rem; }
8505− .md-mr-48 {
8506− margin-right: 48rem; }
8507− .md-mv-48 {
8508− margin-top: 48rem;
8509− margin-bottom: 48rem; }
8510− .md-mh-48 {
8511− margin-left: 48rem;
8512− margin-right: 48rem; }
8513− .md-p-48 {
8514− padding: 48rem; }
8515− .md-pt-48 {
8516− padding-top: 48rem; }
8517− .md-pb-48 {
8518− padding-bottom: 48rem; }
8519− .md-pl-48 {
8520− padding-left: 48rem; }
8521− .md-pr-48 {
8522− padding-right: 48rem; }
8523− .md-pv-48 {
8524− padding-top: 48rem;
8525− padding-bottom: 48rem; }
8526− .md-ph-48 {
8527− padding-left: 48rem;
8528− padding-right: 48rem; }
8529− .md-mt-49 {
8530− margin-top: 49rem; }
8531− .md-mb-49 {
8532− margin-bottom: 49rem; }
8533− .md-ml-49 {
8534− margin-left: 49rem; }
8535− .md-mr-49 {
8536− margin-right: 49rem; }
8537− .md-mv-49 {
8538− margin-top: 49rem;
8539− margin-bottom: 49rem; }
8540− .md-mh-49 {
8541− margin-left: 49rem;
8542− margin-right: 49rem; }
8543− .md-p-49 {
8544− padding: 49rem; }
8545− .md-pt-49 {
8546− padding-top: 49rem; }
8547− .md-pb-49 {
8548− padding-bottom: 49rem; }
8549− .md-pl-49 {
8550− padding-left: 49rem; }
8551− .md-pr-49 {
8552− padding-right: 49rem; }
8553− .md-pv-49 {
8554− padding-top: 49rem;
8555− padding-bottom: 49rem; }
8556− .md-ph-49 {
8557− padding-left: 49rem;
8558− padding-right: 49rem; }
8559− .md-mt-50 {
8560− margin-top: 50rem; }
8561− .md-mb-50 {
8562− margin-bottom: 50rem; }
8563− .md-ml-50 {
8564− margin-left: 50rem; }
8565− .md-mr-50 {
8566− margin-right: 50rem; }
8567− .md-mv-50 {
8568− margin-top: 50rem;
8569− margin-bottom: 50rem; }
8570− .md-mh-50 {
8571− margin-left: 50rem;
8572− margin-right: 50rem; }
8573− .md-p-50 {
8574− padding: 50rem; }
8575− .md-pt-50 {
8576− padding-top: 50rem; }
8577− .md-pb-50 {
8578− padding-bottom: 50rem; }
8579− .md-pl-50 {
8580− padding-left: 50rem; }
8581− .md-pr-50 {
8582− padding-right: 50rem; }
8583− .md-pv-50 {
8584− padding-top: 50rem;
8585− padding-bottom: 50rem; }
8586− .md-ph-50 {
8587− padding-left: 50rem;
8588− padding-right: 50rem; }
8589− .md-mt-51 {
8590− margin-top: 51rem; }
8591− .md-mb-51 {
8592− margin-bottom: 51rem; }
8593− .md-ml-51 {
8594− margin-left: 51rem; }
8595− .md-mr-51 {
8596− margin-right: 51rem; }
8597− .md-mv-51 {
8598− margin-top: 51rem;
8599− margin-bottom: 51rem; }
8600− .md-mh-51 {
8601− margin-left: 51rem;
8602− margin-right: 51rem; }
8603− .md-p-51 {
8604− padding: 51rem; }
8605− .md-pt-51 {
8606− padding-top: 51rem; }
8607− .md-pb-51 {
8608− padding-bottom: 51rem; }
8609− .md-pl-51 {
8610− padding-left: 51rem; }
8611− .md-pr-51 {
8612− padding-right: 51rem; }
8613− .md-pv-51 {
8614− padding-top: 51rem;
8615− padding-bottom: 51rem; }
8616− .md-ph-51 {
8617− padding-left: 51rem;
8618− padding-right: 51rem; }
8619− .md-mt-52 {
8620− margin-top: 52rem; }
8621− .md-mb-52 {
8622− margin-bottom: 52rem; }
8623− .md-ml-52 {
8624− margin-left: 52rem; }
8625− .md-mr-52 {
8626− margin-right: 52rem; }
8627− .md-mv-52 {
8628− margin-top: 52rem;
8629− margin-bottom: 52rem; }
8630− .md-mh-52 {
8631− margin-left: 52rem;
8632− margin-right: 52rem; }
8633− .md-p-52 {
8634− padding: 52rem; }
8635− .md-pt-52 {
8636− padding-top: 52rem; }
8637− .md-pb-52 {
8638− padding-bottom: 52rem; }
8639− .md-pl-52 {
8640− padding-left: 52rem; }
8641− .md-pr-52 {
8642− padding-right: 52rem; }
8643− .md-pv-52 {
8644− padding-top: 52rem;
8645− padding-bottom: 52rem; }
8646− .md-ph-52 {
8647− padding-left: 52rem;
8648− padding-right: 52rem; }
8649− .md-mt-53 {
8650− margin-top: 53rem; }
8651− .md-mb-53 {
8652− margin-bottom: 53rem; }
8653− .md-ml-53 {
8654− margin-left: 53rem; }
8655− .md-mr-53 {
8656− margin-right: 53rem; }
8657− .md-mv-53 {
8658− margin-top: 53rem;
8659− margin-bottom: 53rem; }
8660− .md-mh-53 {
8661− margin-left: 53rem;
8662− margin-right: 53rem; }
8663− .md-p-53 {
8664− padding: 53rem; }
8665− .md-pt-53 {
8666− padding-top: 53rem; }
8667− .md-pb-53 {
8668− padding-bottom: 53rem; }
8669− .md-pl-53 {
8670− padding-left: 53rem; }
8671− .md-pr-53 {
8672− padding-right: 53rem; }
8673− .md-pv-53 {
8674− padding-top: 53rem;
8675− padding-bottom: 53rem; }
8676− .md-ph-53 {
8677− padding-left: 53rem;
8678− padding-right: 53rem; }
8679− .md-mt-54 {
8680− margin-top: 54rem; }
8681− .md-mb-54 {
8682− margin-bottom: 54rem; }
8683− .md-ml-54 {
8684− margin-left: 54rem; }
8685− .md-mr-54 {
8686− margin-right: 54rem; }
8687− .md-mv-54 {
8688− margin-top: 54rem;
8689− margin-bottom: 54rem; }
8690− .md-mh-54 {
8691− margin-left: 54rem;
8692− margin-right: 54rem; }
8693− .md-p-54 {
8694− padding: 54rem; }
8695− .md-pt-54 {
8696− padding-top: 54rem; }
8697− .md-pb-54 {
8698− padding-bottom: 54rem; }
8699− .md-pl-54 {
8700− padding-left: 54rem; }
8701− .md-pr-54 {
8702− padding-right: 54rem; }
8703− .md-pv-54 {
8704− padding-top: 54rem;
8705− padding-bottom: 54rem; }
8706− .md-ph-54 {
8707− padding-left: 54rem;
8708− padding-right: 54rem; }
8709− .md-mt-55 {
8710− margin-top: 55rem; }
8711− .md-mb-55 {
8712− margin-bottom: 55rem; }
8713− .md-ml-55 {
8714− margin-left: 55rem; }
8715− .md-mr-55 {
8716− margin-right: 55rem; }
8717− .md-mv-55 {
8718− margin-top: 55rem;
8719− margin-bottom: 55rem; }
8720− .md-mh-55 {
8721− margin-left: 55rem;
8722− margin-right: 55rem; }
8723− .md-p-55 {
8724− padding: 55rem; }
8725− .md-pt-55 {
8726− padding-top: 55rem; }
8727− .md-pb-55 {
8728− padding-bottom: 55rem; }
8729− .md-pl-55 {
8730− padding-left: 55rem; }
8731− .md-pr-55 {
8732− padding-right: 55rem; }
8733− .md-pv-55 {
8734− padding-top: 55rem;
8735− padding-bottom: 55rem; }
8736− .md-ph-55 {
8737− padding-left: 55rem;
8738− padding-right: 55rem; }
8739− .md-mt-56 {
8740− margin-top: 56rem; }
8741− .md-mb-56 {
8742− margin-bottom: 56rem; }
8743− .md-ml-56 {
8744− margin-left: 56rem; }
8745− .md-mr-56 {
8746− margin-right: 56rem; }
8747− .md-mv-56 {
8748− margin-top: 56rem;
8749− margin-bottom: 56rem; }
8750− .md-mh-56 {
8751− margin-left: 56rem;
8752− margin-right: 56rem; }
8753− .md-p-56 {
8754− padding: 56rem; }
8755− .md-pt-56 {
8756− padding-top: 56rem; }
8757− .md-pb-56 {
8758− padding-bottom: 56rem; }
8759− .md-pl-56 {
8760− padding-left: 56rem; }
8761− .md-pr-56 {
8762− padding-right: 56rem; }
8763− .md-pv-56 {
8764− padding-top: 56rem;
8765− padding-bottom: 56rem; }
8766− .md-ph-56 {
8767− padding-left: 56rem;
8768− padding-right: 56rem; }
8769− .md-mt-57 {
8770− margin-top: 57rem; }
8771− .md-mb-57 {
8772− margin-bottom: 57rem; }
8773− .md-ml-57 {
8774− margin-left: 57rem; }
8775− .md-mr-57 {
8776− margin-right: 57rem; }
8777− .md-mv-57 {
8778− margin-top: 57rem;
8779− margin-bottom: 57rem; }
8780− .md-mh-57 {
8781− margin-left: 57rem;
8782− margin-right: 57rem; }
8783− .md-p-57 {
8784− padding: 57rem; }
8785− .md-pt-57 {
8786− padding-top: 57rem; }
8787− .md-pb-57 {
8788− padding-bottom: 57rem; }
8789− .md-pl-57 {
8790− padding-left: 57rem; }
8791− .md-pr-57 {
8792− padding-right: 57rem; }
8793− .md-pv-57 {
8794− padding-top: 57rem;
8795− padding-bottom: 57rem; }
8796− .md-ph-57 {
8797− padding-left: 57rem;
8798− padding-right: 57rem; }
8799− .md-mt-58 {
8800− margin-top: 58rem; }
8801− .md-mb-58 {
8802− margin-bottom: 58rem; }
8803− .md-ml-58 {
8804− margin-left: 58rem; }
8805− .md-mr-58 {
8806− margin-right: 58rem; }
8807− .md-mv-58 {
8808− margin-top: 58rem;
8809− margin-bottom: 58rem; }
8810− .md-mh-58 {
8811− margin-left: 58rem;
8812− margin-right: 58rem; }
8813− .md-p-58 {
8814− padding: 58rem; }
8815− .md-pt-58 {
8816− padding-top: 58rem; }
8817− .md-pb-58 {
8818− padding-bottom: 58rem; }
8819− .md-pl-58 {
8820− padding-left: 58rem; }
8821− .md-pr-58 {
8822− padding-right: 58rem; }
8823− .md-pv-58 {
8824− padding-top: 58rem;
8825− padding-bottom: 58rem; }
8826− .md-ph-58 {
8827− padding-left: 58rem;
8828− padding-right: 58rem; }
8829− .md-mt-59 {
8830− margin-top: 59rem; }
8831− .md-mb-59 {
8832− margin-bottom: 59rem; }
8833− .md-ml-59 {
8834− margin-left: 59rem; }
8835− .md-mr-59 {
8836− margin-right: 59rem; }
8837− .md-mv-59 {
8838− margin-top: 59rem;
8839− margin-bottom: 59rem; }
8840− .md-mh-59 {
8841− margin-left: 59rem;
8842− margin-right: 59rem; }
8843− .md-p-59 {
8844− padding: 59rem; }
8845− .md-pt-59 {
8846− padding-top: 59rem; }
8847− .md-pb-59 {
8848− padding-bottom: 59rem; }
8849− .md-pl-59 {
8850− padding-left: 59rem; }
8851− .md-pr-59 {
8852− padding-right: 59rem; }
8853− .md-pv-59 {
8854− padding-top: 59rem;
8855− padding-bottom: 59rem; }
8856− .md-ph-59 {
8857− padding-left: 59rem;
8858− padding-right: 59rem; }
8859− .md-mt-60 {
8860− margin-top: 60rem; }
8861− .md-mb-60 {
8862− margin-bottom: 60rem; }
8863− .md-ml-60 {
8864− margin-left: 60rem; }
8865− .md-mr-60 {
8866− margin-right: 60rem; }
8867− .md-mv-60 {
8868− margin-top: 60rem;
8869− margin-bottom: 60rem; }
8870− .md-mh-60 {
8871− margin-left: 60rem;
8872− margin-right: 60rem; }
8873− .md-p-60 {
8874− padding: 60rem; }
8875− .md-pt-60 {
8876− padding-top: 60rem; }
8877− .md-pb-60 {
8878− padding-bottom: 60rem; }
8879− .md-pl-60 {
8880− padding-left: 60rem; }
8881− .md-pr-60 {
8882− padding-right: 60rem; }
8883− .md-pv-60 {
8884− padding-top: 60rem;
8885− padding-bottom: 60rem; }
8886− .md-ph-60 {
8887− padding-left: 60rem;
8888− padding-right: 60rem; }
8889− .md-mt-61 {
8890− margin-top: 61rem; }
8891− .md-mb-61 {
8892− margin-bottom: 61rem; }
8893− .md-ml-61 {
8894− margin-left: 61rem; }
8895− .md-mr-61 {
8896− margin-right: 61rem; }
8897− .md-mv-61 {
8898− margin-top: 61rem;
8899− margin-bottom: 61rem; }
8900− .md-mh-61 {
8901− margin-left: 61rem;
8902− margin-right: 61rem; }
8903− .md-p-61 {
8904− padding: 61rem; }
8905− .md-pt-61 {
8906− padding-top: 61rem; }
8907− .md-pb-61 {
8908− padding-bottom: 61rem; }
8909− .md-pl-61 {
8910− padding-left: 61rem; }
8911− .md-pr-61 {
8912− padding-right: 61rem; }
8913− .md-pv-61 {
8914− padding-top: 61rem;
8915− padding-bottom: 61rem; }
8916− .md-ph-61 {
8917− padding-left: 61rem;
8918− padding-right: 61rem; }
8919− .md-mt-62 {
8920− margin-top: 62rem; }
8921− .md-mb-62 {
8922− margin-bottom: 62rem; }
8923− .md-ml-62 {
8924− margin-left: 62rem; }
8925− .md-mr-62 {
8926− margin-right: 62rem; }
8927− .md-mv-62 {
8928− margin-top: 62rem;
8929− margin-bottom: 62rem; }
8930− .md-mh-62 {
8931− margin-left: 62rem;
8932− margin-right: 62rem; }
8933− .md-p-62 {
8934− padding: 62rem; }
8935− .md-pt-62 {
8936− padding-top: 62rem; }
8937− .md-pb-62 {
8938− padding-bottom: 62rem; }
8939− .md-pl-62 {
8940− padding-left: 62rem; }
8941− .md-pr-62 {
8942− padding-right: 62rem; }
8943− .md-pv-62 {
8944− padding-top: 62rem;
8945− padding-bottom: 62rem; }
8946− .md-ph-62 {
8947− padding-left: 62rem;
8948− padding-right: 62rem; }
8949− .md-mt-63 {
8950− margin-top: 63rem; }
8951− .md-mb-63 {
8952− margin-bottom: 63rem; }
8953− .md-ml-63 {
8954− margin-left: 63rem; }
8955− .md-mr-63 {
8956− margin-right: 63rem; }
8957− .md-mv-63 {
8958− margin-top: 63rem;
8959− margin-bottom: 63rem; }
8960− .md-mh-63 {
8961− margin-left: 63rem;
8962− margin-right: 63rem; }
8963− .md-p-63 {
8964− padding: 63rem; }
8965− .md-pt-63 {
8966− padding-top: 63rem; }
8967− .md-pb-63 {
8968− padding-bottom: 63rem; }
8969− .md-pl-63 {
8970− padding-left: 63rem; }
8971− .md-pr-63 {
8972− padding-right: 63rem; }
8973− .md-pv-63 {
8974− padding-top: 63rem;
8975− padding-bottom: 63rem; }
8976− .md-ph-63 {
8977− padding-left: 63rem;
8978− padding-right: 63rem; }
8979− .md-mt-64 {
8980− margin-top: 64rem; }
8981− .md-mb-64 {
8982− margin-bottom: 64rem; }
8983− .md-ml-64 {
8984− margin-left: 64rem; }
8985− .md-mr-64 {
8986− margin-right: 64rem; }
8987− .md-mv-64 {
8988− margin-top: 64rem;
8989− margin-bottom: 64rem; }
8990− .md-mh-64 {
8991− margin-left: 64rem;
8992− margin-right: 64rem; }
8993− .md-p-64 {
8994− padding: 64rem; }
8995− .md-pt-64 {
8996− padding-top: 64rem; }
8997− .md-pb-64 {
8998− padding-bottom: 64rem; }
8999− .md-pl-64 {
9000− padding-left: 64rem; }
9001− .md-pr-64 {
9002− padding-right: 64rem; }
9003− .md-pv-64 {
9004− padding-top: 64rem;
9005− padding-bottom: 64rem; }
9006− .md-ph-64 {
9007− padding-left: 64rem;
9008− padding-right: 64rem; }
9009− .md-mt-65 {
9010− margin-top: 65rem; }
9011− .md-mb-65 {
9012− margin-bottom: 65rem; }
9013− .md-ml-65 {
9014− margin-left: 65rem; }
9015− .md-mr-65 {
9016− margin-right: 65rem; }
9017− .md-mv-65 {
9018− margin-top: 65rem;
9019− margin-bottom: 65rem; }
9020− .md-mh-65 {
9021− margin-left: 65rem;
9022− margin-right: 65rem; }
9023− .md-p-65 {
9024− padding: 65rem; }
9025− .md-pt-65 {
9026− padding-top: 65rem; }
9027− .md-pb-65 {
9028− padding-bottom: 65rem; }
9029− .md-pl-65 {
9030− padding-left: 65rem; }
9031− .md-pr-65 {
9032− padding-right: 65rem; }
9033− .md-pv-65 {
9034− padding-top: 65rem;
9035− padding-bottom: 65rem; }
9036− .md-ph-65 {
9037− padding-left: 65rem;
9038− padding-right: 65rem; }
9039− .md-mt-66 {
9040− margin-top: 66rem; }
9041− .md-mb-66 {
9042− margin-bottom: 66rem; }
9043− .md-ml-66 {
9044− margin-left: 66rem; }
9045− .md-mr-66 {
9046− margin-right: 66rem; }
9047− .md-mv-66 {
9048− margin-top: 66rem;
9049− margin-bottom: 66rem; }
9050− .md-mh-66 {
9051− margin-left: 66rem;
9052− margin-right: 66rem; }
9053− .md-p-66 {
9054− padding: 66rem; }
9055− .md-pt-66 {
9056− padding-top: 66rem; }
9057− .md-pb-66 {
9058− padding-bottom: 66rem; }
9059− .md-pl-66 {
9060− padding-left: 66rem; }
9061− .md-pr-66 {
9062− padding-right: 66rem; }
9063− .md-pv-66 {
9064− padding-top: 66rem;
9065− padding-bottom: 66rem; }
9066− .md-ph-66 {
9067− padding-left: 66rem;
9068− padding-right: 66rem; }
9069− .md-mt-67 {
9070− margin-top: 67rem; }
9071− .md-mb-67 {
9072− margin-bottom: 67rem; }
9073− .md-ml-67 {
9074− margin-left: 67rem; }
9075− .md-mr-67 {
9076− margin-right: 67rem; }
9077− .md-mv-67 {
9078− margin-top: 67rem;
9079− margin-bottom: 67rem; }
9080− .md-mh-67 {
9081− margin-left: 67rem;
9082− margin-right: 67rem; }
9083− .md-p-67 {
9084− padding: 67rem; }
9085− .md-pt-67 {
9086− padding-top: 67rem; }
9087− .md-pb-67 {
9088− padding-bottom: 67rem; }
9089− .md-pl-67 {
9090− padding-left: 67rem; }
9091− .md-pr-67 {
9092− padding-right: 67rem; }
9093− .md-pv-67 {
9094− padding-top: 67rem;
9095− padding-bottom: 67rem; }
9096− .md-ph-67 {
9097− padding-left: 67rem;
9098− padding-right: 67rem; }
9099− .md-mt-68 {
9100− margin-top: 68rem; }
9101− .md-mb-68 {
9102− margin-bottom: 68rem; }
9103− .md-ml-68 {
9104− margin-left: 68rem; }
9105− .md-mr-68 {
9106− margin-right: 68rem; }
9107− .md-mv-68 {
9108− margin-top: 68rem;
9109− margin-bottom: 68rem; }
9110− .md-mh-68 {
9111− margin-left: 68rem;
9112− margin-right: 68rem; }
9113− .md-p-68 {
9114− padding: 68rem; }
9115− .md-pt-68 {
9116− padding-top: 68rem; }
9117− .md-pb-68 {
9118− padding-bottom: 68rem; }
9119− .md-pl-68 {
9120− padding-left: 68rem; }
9121− .md-pr-68 {
9122− padding-right: 68rem; }
9123− .md-pv-68 {
9124− padding-top: 68rem;
9125− padding-bottom: 68rem; }
9126− .md-ph-68 {
9127− padding-left: 68rem;
9128− padding-right: 68rem; }
9129− .md-mt-69 {
9130− margin-top: 69rem; }
9131− .md-mb-69 {
9132− margin-bottom: 69rem; }
9133− .md-ml-69 {
9134− margin-left: 69rem; }
9135− .md-mr-69 {
9136− margin-right: 69rem; }
9137− .md-mv-69 {
9138− margin-top: 69rem;
9139− margin-bottom: 69rem; }
9140− .md-mh-69 {
9141− margin-left: 69rem;
9142− margin-right: 69rem; }
9143− .md-p-69 {
9144− padding: 69rem; }
9145− .md-pt-69 {
9146− padding-top: 69rem; }
9147− .md-pb-69 {
9148− padding-bottom: 69rem; }
9149− .md-pl-69 {
9150− padding-left: 69rem; }
9151− .md-pr-69 {
9152− padding-right: 69rem; }
9153− .md-pv-69 {
9154− padding-top: 69rem;
9155− padding-bottom: 69rem; }
9156− .md-ph-69 {
9157− padding-left: 69rem;
9158− padding-right: 69rem; }
9159− .md-mt-70 {
9160− margin-top: 70rem; }
9161− .md-mb-70 {
9162− margin-bottom: 70rem; }
9163− .md-ml-70 {
9164− margin-left: 70rem; }
9165− .md-mr-70 {
9166− margin-right: 70rem; }
9167− .md-mv-70 {
9168− margin-top: 70rem;
9169− margin-bottom: 70rem; }
9170− .md-mh-70 {
9171− margin-left: 70rem;
9172− margin-right: 70rem; }
9173− .md-p-70 {
9174− padding: 70rem; }
9175− .md-pt-70 {
9176− padding-top: 70rem; }
9177− .md-pb-70 {
9178− padding-bottom: 70rem; }
9179− .md-pl-70 {
9180− padding-left: 70rem; }
9181− .md-pr-70 {
9182− padding-right: 70rem; }
9183− .md-pv-70 {
9184− padding-top: 70rem;
9185− padding-bottom: 70rem; }
9186− .md-ph-70 {
9187− padding-left: 70rem;
9188− padding-right: 70rem; }
9189− .md-mt-71 {
9190− margin-top: 71rem; }
9191− .md-mb-71 {
9192− margin-bottom: 71rem; }
9193− .md-ml-71 {
9194− margin-left: 71rem; }
9195− .md-mr-71 {
9196− margin-right: 71rem; }
9197− .md-mv-71 {
9198− margin-top: 71rem;
9199− margin-bottom: 71rem; }
9200− .md-mh-71 {
9201− margin-left: 71rem;
9202− margin-right: 71rem; }
9203− .md-p-71 {
9204− padding: 71rem; }
9205− .md-pt-71 {
9206− padding-top: 71rem; }
9207− .md-pb-71 {
9208− padding-bottom: 71rem; }
9209− .md-pl-71 {
9210− padding-left: 71rem; }
9211− .md-pr-71 {
9212− padding-right: 71rem; }
9213− .md-pv-71 {
9214− padding-top: 71rem;
9215− padding-bottom: 71rem; }
9216− .md-ph-71 {
9217− padding-left: 71rem;
9218− padding-right: 71rem; }
9219− .md-mt-72 {
9220− margin-top: 72rem; }
9221− .md-mb-72 {
9222− margin-bottom: 72rem; }
9223− .md-ml-72 {
9224− margin-left: 72rem; }
9225− .md-mr-72 {
9226− margin-right: 72rem; }
9227− .md-mv-72 {
9228− margin-top: 72rem;
9229− margin-bottom: 72rem; }
9230− .md-mh-72 {
9231− margin-left: 72rem;
9232− margin-right: 72rem; }
9233− .md-p-72 {
9234− padding: 72rem; }
9235− .md-pt-72 {
9236− padding-top: 72rem; }
9237− .md-pb-72 {
9238− padding-bottom: 72rem; }
9239− .md-pl-72 {
9240− padding-left: 72rem; }
9241− .md-pr-72 {
9242− padding-right: 72rem; }
9243− .md-pv-72 {
9244− padding-top: 72rem;
9245− padding-bottom: 72rem; }
9246− .md-ph-72 {
9247− padding-left: 72rem;
9248− padding-right: 72rem; }
9249− .md-mt-73 {
9250− margin-top: 73rem; }
9251− .md-mb-73 {
9252− margin-bottom: 73rem; }
9253− .md-ml-73 {
9254− margin-left: 73rem; }
9255− .md-mr-73 {
9256− margin-right: 73rem; }
9257− .md-mv-73 {
9258− margin-top: 73rem;
9259− margin-bottom: 73rem; }
9260− .md-mh-73 {
9261− margin-left: 73rem;
9262− margin-right: 73rem; }
9263− .md-p-73 {
9264− padding: 73rem; }
9265− .md-pt-73 {
9266− padding-top: 73rem; }
9267− .md-pb-73 {
9268− padding-bottom: 73rem; }
9269− .md-pl-73 {
9270− padding-left: 73rem; }
9271− .md-pr-73 {
9272− padding-right: 73rem; }
9273− .md-pv-73 {
9274− padding-top: 73rem;
9275− padding-bottom: 73rem; }
9276− .md-ph-73 {
9277− padding-left: 73rem;
9278− padding-right: 73rem; }
9279− .md-mt-74 {
9280− margin-top: 74rem; }
9281− .md-mb-74 {
9282− margin-bottom: 74rem; }
9283− .md-ml-74 {
9284− margin-left: 74rem; }
9285− .md-mr-74 {
9286− margin-right: 74rem; }
9287− .md-mv-74 {
9288− margin-top: 74rem;
9289− margin-bottom: 74rem; }
9290− .md-mh-74 {
9291− margin-left: 74rem;
9292− margin-right: 74rem; }
9293− .md-p-74 {
9294− padding: 74rem; }
9295− .md-pt-74 {
9296− padding-top: 74rem; }
9297− .md-pb-74 {
9298− padding-bottom: 74rem; }
9299− .md-pl-74 {
9300− padding-left: 74rem; }
9301− .md-pr-74 {
9302− padding-right: 74rem; }
9303− .md-pv-74 {
9304− padding-top: 74rem;
9305− padding-bottom: 74rem; }
9306− .md-ph-74 {
9307− padding-left: 74rem;
9308− padding-right: 74rem; }
9309− .md-mt-75 {
9310− margin-top: 75rem; }
9311− .md-mb-75 {
9312− margin-bottom: 75rem; }
9313− .md-ml-75 {
9314− margin-left: 75rem; }
9315− .md-mr-75 {
9316− margin-right: 75rem; }
9317− .md-mv-75 {
9318− margin-top: 75rem;
9319− margin-bottom: 75rem; }
9320− .md-mh-75 {
9321− margin-left: 75rem;
9322− margin-right: 75rem; }
9323− .md-p-75 {
9324− padding: 75rem; }
9325− .md-pt-75 {
9326− padding-top: 75rem; }
9327− .md-pb-75 {
9328− padding-bottom: 75rem; }
9329− .md-pl-75 {
9330− padding-left: 75rem; }
9331− .md-pr-75 {
9332− padding-right: 75rem; }
9333− .md-pv-75 {
9334− padding-top: 75rem;
9335− padding-bottom: 75rem; }
9336− .md-ph-75 {
9337− padding-left: 75rem;
9338− padding-right: 75rem; }
9339− .md-mt-76 {
9340− margin-top: 76rem; }
9341− .md-mb-76 {
9342− margin-bottom: 76rem; }
9343− .md-ml-76 {
9344− margin-left: 76rem; }
9345− .md-mr-76 {
9346− margin-right: 76rem; }
9347− .md-mv-76 {
9348− margin-top: 76rem;
9349− margin-bottom: 76rem; }
9350− .md-mh-76 {
9351− margin-left: 76rem;
9352− margin-right: 76rem; }
9353− .md-p-76 {
9354− padding: 76rem; }
9355− .md-pt-76 {
9356− padding-top: 76rem; }
9357− .md-pb-76 {
9358− padding-bottom: 76rem; }
9359− .md-pl-76 {
9360− padding-left: 76rem; }
9361− .md-pr-76 {
9362− padding-right: 76rem; }
9363− .md-pv-76 {
9364− padding-top: 76rem;
9365− padding-bottom: 76rem; }
9366− .md-ph-76 {
9367− padding-left: 76rem;
9368− padding-right: 76rem; }
9369− .md-mt-77 {
9370− margin-top: 77rem; }
9371− .md-mb-77 {
9372− margin-bottom: 77rem; }
9373− .md-ml-77 {
9374− margin-left: 77rem; }
9375− .md-mr-77 {
9376− margin-right: 77rem; }
9377− .md-mv-77 {
9378− margin-top: 77rem;
9379− margin-bottom: 77rem; }
9380− .md-mh-77 {
9381− margin-left: 77rem;
9382− margin-right: 77rem; }
9383− .md-p-77 {
9384− padding: 77rem; }
9385− .md-pt-77 {
9386− padding-top: 77rem; }
9387− .md-pb-77 {
9388− padding-bottom: 77rem; }
9389− .md-pl-77 {
9390− padding-left: 77rem; }
9391− .md-pr-77 {
9392− padding-right: 77rem; }
9393− .md-pv-77 {
9394− padding-top: 77rem;
9395− padding-bottom: 77rem; }
9396− .md-ph-77 {
9397− padding-left: 77rem;
9398− padding-right: 77rem; }
9399− .md-mt-78 {
9400− margin-top: 78rem; }
9401− .md-mb-78 {
9402− margin-bottom: 78rem; }
9403− .md-ml-78 {
9404− margin-left: 78rem; }
9405− .md-mr-78 {
9406− margin-right: 78rem; }
9407− .md-mv-78 {
9408− margin-top: 78rem;
9409− margin-bottom: 78rem; }
9410− .md-mh-78 {
9411− margin-left: 78rem;
9412− margin-right: 78rem; }
9413− .md-p-78 {
9414− padding: 78rem; }
9415− .md-pt-78 {
9416− padding-top: 78rem; }
9417− .md-pb-78 {
9418− padding-bottom: 78rem; }
9419− .md-pl-78 {
9420− padding-left: 78rem; }
9421− .md-pr-78 {
9422− padding-right: 78rem; }
9423− .md-pv-78 {
9424− padding-top: 78rem;
9425− padding-bottom: 78rem; }
9426− .md-ph-78 {
9427− padding-left: 78rem;
9428− padding-right: 78rem; }
9429− .md-mt-79 {
9430− margin-top: 79rem; }
9431− .md-mb-79 {
9432− margin-bottom: 79rem; }
9433− .md-ml-79 {
9434− margin-left: 79rem; }
9435− .md-mr-79 {
9436− margin-right: 79rem; }
9437− .md-mv-79 {
9438− margin-top: 79rem;
9439− margin-bottom: 79rem; }
9440− .md-mh-79 {
9441− margin-left: 79rem;
9442− margin-right: 79rem; }
9443− .md-p-79 {
9444− padding: 79rem; }
9445− .md-pt-79 {
9446− padding-top: 79rem; }
9447− .md-pb-79 {
9448− padding-bottom: 79rem; }
9449− .md-pl-79 {
9450− padding-left: 79rem; }
9451− .md-pr-79 {
9452− padding-right: 79rem; }
9453− .md-pv-79 {
9454− padding-top: 79rem;
9455− padding-bottom: 79rem; }
9456− .md-ph-79 {
9457− padding-left: 79rem;
9458− padding-right: 79rem; }
9459− .md-mt-80 {
9460− margin-top: 80rem; }
9461− .md-mb-80 {
9462− margin-bottom: 80rem; }
9463− .md-ml-80 {
9464− margin-left: 80rem; }
9465− .md-mr-80 {
9466− margin-right: 80rem; }
9467− .md-mv-80 {
9468− margin-top: 80rem;
9469− margin-bottom: 80rem; }
9470− .md-mh-80 {
9471− margin-left: 80rem;
9472− margin-right: 80rem; }
9473− .md-p-80 {
9474− padding: 80rem; }
9475− .md-pt-80 {
9476− padding-top: 80rem; }
9477− .md-pb-80 {
9478− padding-bottom: 80rem; }
9479− .md-pl-80 {
9480− padding-left: 80rem; }
9481− .md-pr-80 {
9482− padding-right: 80rem; }
9483− .md-pv-80 {
9484− padding-top: 80rem;
9485− padding-bottom: 80rem; }
9486− .md-ph-80 {
9487− padding-left: 80rem;
9488− padding-right: 80rem; }
9489− .md-mt-81 {
9490− margin-top: 81rem; }
9491− .md-mb-81 {
9492− margin-bottom: 81rem; }
9493− .md-ml-81 {
9494− margin-left: 81rem; }
9495− .md-mr-81 {
9496− margin-right: 81rem; }
9497− .md-mv-81 {
9498− margin-top: 81rem;
9499− margin-bottom: 81rem; }
9500− .md-mh-81 {
9501− margin-left: 81rem;
9502− margin-right: 81rem; }
9503− .md-p-81 {
9504− padding: 81rem; }
9505− .md-pt-81 {
9506− padding-top: 81rem; }
9507− .md-pb-81 {
9508− padding-bottom: 81rem; }
9509− .md-pl-81 {
9510− padding-left: 81rem; }
9511− .md-pr-81 {
9512− padding-right: 81rem; }
9513− .md-pv-81 {
9514− padding-top: 81rem;
9515− padding-bottom: 81rem; }
9516− .md-ph-81 {
9517− padding-left: 81rem;
9518− padding-right: 81rem; }
9519− .md-mt-82 {
9520− margin-top: 82rem; }
9521− .md-mb-82 {
9522− margin-bottom: 82rem; }
9523− .md-ml-82 {
9524− margin-left: 82rem; }
9525− .md-mr-82 {
9526− margin-right: 82rem; }
9527− .md-mv-82 {
9528− margin-top: 82rem;
9529− margin-bottom: 82rem; }
9530− .md-mh-82 {
9531− margin-left: 82rem;
9532− margin-right: 82rem; }
9533− .md-p-82 {
9534− padding: 82rem; }
9535− .md-pt-82 {
9536− padding-top: 82rem; }
9537− .md-pb-82 {
9538− padding-bottom: 82rem; }
9539− .md-pl-82 {
9540− padding-left: 82rem; }
9541− .md-pr-82 {
9542− padding-right: 82rem; }
9543− .md-pv-82 {
9544− padding-top: 82rem;
9545− padding-bottom: 82rem; }
9546− .md-ph-82 {
9547− padding-left: 82rem;
9548− padding-right: 82rem; }
9549− .md-mt-83 {
9550− margin-top: 83rem; }
9551− .md-mb-83 {
9552− margin-bottom: 83rem; }
9553− .md-ml-83 {
9554− margin-left: 83rem; }
9555− .md-mr-83 {
9556− margin-right: 83rem; }
9557− .md-mv-83 {
9558− margin-top: 83rem;
9559− margin-bottom: 83rem; }
9560− .md-mh-83 {
9561− margin-left: 83rem;
9562− margin-right: 83rem; }
9563− .md-p-83 {
9564− padding: 83rem; }
9565− .md-pt-83 {
9566− padding-top: 83rem; }
9567− .md-pb-83 {
9568− padding-bottom: 83rem; }
9569− .md-pl-83 {
9570− padding-left: 83rem; }
9571− .md-pr-83 {
9572− padding-right: 83rem; }
9573− .md-pv-83 {
9574− padding-top: 83rem;
9575− padding-bottom: 83rem; }
9576− .md-ph-83 {
9577− padding-left: 83rem;
9578− padding-right: 83rem; }
9579− .md-mt-84 {
9580− margin-top: 84rem; }
9581− .md-mb-84 {
9582− margin-bottom: 84rem; }
9583− .md-ml-84 {
9584− margin-left: 84rem; }
9585− .md-mr-84 {
9586− margin-right: 84rem; }
9587− .md-mv-84 {
9588− margin-top: 84rem;
9589− margin-bottom: 84rem; }
9590− .md-mh-84 {
9591− margin-left: 84rem;
9592− margin-right: 84rem; }
9593− .md-p-84 {
9594− padding: 84rem; }
9595− .md-pt-84 {
9596− padding-top: 84rem; }
9597− .md-pb-84 {
9598− padding-bottom: 84rem; }
9599− .md-pl-84 {
9600− padding-left: 84rem; }
9601− .md-pr-84 {
9602− padding-right: 84rem; }
9603− .md-pv-84 {
9604− padding-top: 84rem;
9605− padding-bottom: 84rem; }
9606− .md-ph-84 {
9607− padding-left: 84rem;
9608− padding-right: 84rem; }
9609− .md-mt-85 {
9610− margin-top: 85rem; }
9611− .md-mb-85 {
9612− margin-bottom: 85rem; }
9613− .md-ml-85 {
9614− margin-left: 85rem; }
9615− .md-mr-85 {
9616− margin-right: 85rem; }
9617− .md-mv-85 {
9618− margin-top: 85rem;
9619− margin-bottom: 85rem; }
9620− .md-mh-85 {
9621− margin-left: 85rem;
9622− margin-right: 85rem; }
9623− .md-p-85 {
9624− padding: 85rem; }
9625− .md-pt-85 {
9626− padding-top: 85rem; }
9627− .md-pb-85 {
9628− padding-bottom: 85rem; }
9629− .md-pl-85 {
9630− padding-left: 85rem; }
9631− .md-pr-85 {
9632− padding-right: 85rem; }
9633− .md-pv-85 {
9634− padding-top: 85rem;
9635− padding-bottom: 85rem; }
9636− .md-ph-85 {
9637− padding-left: 85rem;
9638− padding-right: 85rem; }
9639− .md-mt-86 {
9640− margin-top: 86rem; }
9641− .md-mb-86 {
9642− margin-bottom: 86rem; }
9643− .md-ml-86 {
9644− margin-left: 86rem; }
9645− .md-mr-86 {
9646− margin-right: 86rem; }
9647− .md-mv-86 {
9648− margin-top: 86rem;
9649− margin-bottom: 86rem; }
9650− .md-mh-86 {
9651− margin-left: 86rem;
9652− margin-right: 86rem; }
9653− .md-p-86 {
9654− padding: 86rem; }
9655− .md-pt-86 {
9656− padding-top: 86rem; }
9657− .md-pb-86 {
9658− padding-bottom: 86rem; }
9659− .md-pl-86 {
9660− padding-left: 86rem; }
9661− .md-pr-86 {
9662− padding-right: 86rem; }
9663− .md-pv-86 {
9664− padding-top: 86rem;
9665− padding-bottom: 86rem; }
9666− .md-ph-86 {
9667− padding-left: 86rem;
9668− padding-right: 86rem; }
9669− .md-mt-87 {
9670− margin-top: 87rem; }
9671− .md-mb-87 {
9672− margin-bottom: 87rem; }
9673− .md-ml-87 {
9674− margin-left: 87rem; }
9675− .md-mr-87 {
9676− margin-right: 87rem; }
9677− .md-mv-87 {
9678− margin-top: 87rem;
9679− margin-bottom: 87rem; }
9680− .md-mh-87 {
9681− margin-left: 87rem;
9682− margin-right: 87rem; }
9683− .md-p-87 {
9684− padding: 87rem; }
9685− .md-pt-87 {
9686− padding-top: 87rem; }
9687− .md-pb-87 {
9688− padding-bottom: 87rem; }
9689− .md-pl-87 {
9690− padding-left: 87rem; }
9691− .md-pr-87 {
9692− padding-right: 87rem; }
9693− .md-pv-87 {
9694− padding-top: 87rem;
9695− padding-bottom: 87rem; }
9696− .md-ph-87 {
9697− padding-left: 87rem;
9698− padding-right: 87rem; }
9699− .md-mt-88 {
9700− margin-top: 88rem; }
9701− .md-mb-88 {
9702− margin-bottom: 88rem; }
9703− .md-ml-88 {
9704− margin-left: 88rem; }
9705− .md-mr-88 {
9706− margin-right: 88rem; }
9707− .md-mv-88 {
9708− margin-top: 88rem;
9709− margin-bottom: 88rem; }
9710− .md-mh-88 {
9711− margin-left: 88rem;
9712− margin-right: 88rem; }
9713− .md-p-88 {
9714− padding: 88rem; }
9715− .md-pt-88 {
9716− padding-top: 88rem; }
9717− .md-pb-88 {
9718− padding-bottom: 88rem; }
9719− .md-pl-88 {
9720− padding-left: 88rem; }
9721− .md-pr-88 {
9722− padding-right: 88rem; }
9723− .md-pv-88 {
9724− padding-top: 88rem;
9725− padding-bottom: 88rem; }
9726− .md-ph-88 {
9727− padding-left: 88rem;
9728− padding-right: 88rem; }
9729− .md-mt-89 {
9730− margin-top: 89rem; }
9731− .md-mb-89 {
9732− margin-bottom: 89rem; }
9733− .md-ml-89 {
9734− margin-left: 89rem; }
9735− .md-mr-89 {
9736− margin-right: 89rem; }
9737− .md-mv-89 {
9738− margin-top: 89rem;
9739− margin-bottom: 89rem; }
9740− .md-mh-89 {
9741− margin-left: 89rem;
9742− margin-right: 89rem; }
9743− .md-p-89 {
9744− padding: 89rem; }
9745− .md-pt-89 {
9746− padding-top: 89rem; }
9747− .md-pb-89 {
9748− padding-bottom: 89rem; }
9749− .md-pl-89 {
9750− padding-left: 89rem; }
9751− .md-pr-89 {
9752− padding-right: 89rem; }
9753− .md-pv-89 {
9754− padding-top: 89rem;
9755− padding-bottom: 89rem; }
9756− .md-ph-89 {
9757− padding-left: 89rem;
9758− padding-right: 89rem; }
9759− .md-mt-90 {
9760− margin-top: 90rem; }
9761− .md-mb-90 {
9762− margin-bottom: 90rem; }
9763− .md-ml-90 {
9764− margin-left: 90rem; }
9765− .md-mr-90 {
9766− margin-right: 90rem; }
9767− .md-mv-90 {
9768− margin-top: 90rem;
9769− margin-bottom: 90rem; }
9770− .md-mh-90 {
9771− margin-left: 90rem;
9772− margin-right: 90rem; }
9773− .md-p-90 {
9774− padding: 90rem; }
9775− .md-pt-90 {
9776− padding-top: 90rem; }
9777− .md-pb-90 {
9778− padding-bottom: 90rem; }
9779− .md-pl-90 {
9780− padding-left: 90rem; }
9781− .md-pr-90 {
9782− padding-right: 90rem; }
9783− .md-pv-90 {
9784− padding-top: 90rem;
9785− padding-bottom: 90rem; }
9786− .md-ph-90 {
9787− padding-left: 90rem;
9788− padding-right: 90rem; }
9789− .md-mt-91 {
9790− margin-top: 91rem; }
9791− .md-mb-91 {
9792− margin-bottom: 91rem; }
9793− .md-ml-91 {
9794− margin-left: 91rem; }
9795− .md-mr-91 {
9796− margin-right: 91rem; }
9797− .md-mv-91 {
9798− margin-top: 91rem;
9799− margin-bottom: 91rem; }
9800− .md-mh-91 {
9801− margin-left: 91rem;
9802− margin-right: 91rem; }
9803− .md-p-91 {
9804− padding: 91rem; }
9805− .md-pt-91 {
9806− padding-top: 91rem; }
9807− .md-pb-91 {
9808− padding-bottom: 91rem; }
9809− .md-pl-91 {
9810− padding-left: 91rem; }
9811− .md-pr-91 {
9812− padding-right: 91rem; }
9813− .md-pv-91 {
9814− padding-top: 91rem;
9815− padding-bottom: 91rem; }
9816− .md-ph-91 {
9817− padding-left: 91rem;
9818− padding-right: 91rem; }
9819− .md-mt-92 {
9820− margin-top: 92rem; }
9821− .md-mb-92 {
9822− margin-bottom: 92rem; }
9823− .md-ml-92 {
9824− margin-left: 92rem; }
9825− .md-mr-92 {
9826− margin-right: 92rem; }
9827− .md-mv-92 {
9828− margin-top: 92rem;
9829− margin-bottom: 92rem; }
9830− .md-mh-92 {
9831− margin-left: 92rem;
9832− margin-right: 92rem; }
9833− .md-p-92 {
9834− padding: 92rem; }
9835− .md-pt-92 {
9836− padding-top: 92rem; }
9837− .md-pb-92 {
9838− padding-bottom: 92rem; }
9839− .md-pl-92 {
9840− padding-left: 92rem; }
9841− .md-pr-92 {
9842− padding-right: 92rem; }
9843− .md-pv-92 {
9844− padding-top: 92rem;
9845− padding-bottom: 92rem; }
9846− .md-ph-92 {
9847− padding-left: 92rem;
9848− padding-right: 92rem; }
9849− .md-mt-93 {
9850− margin-top: 93rem; }
9851− .md-mb-93 {
9852− margin-bottom: 93rem; }
9853− .md-ml-93 {
9854− margin-left: 93rem; }
9855− .md-mr-93 {
9856− margin-right: 93rem; }
9857− .md-mv-93 {
9858− margin-top: 93rem;
9859− margin-bottom: 93rem; }
9860− .md-mh-93 {
9861− margin-left: 93rem;
9862− margin-right: 93rem; }
9863− .md-p-93 {
9864− padding: 93rem; }
9865− .md-pt-93 {
9866− padding-top: 93rem; }
9867− .md-pb-93 {
9868− padding-bottom: 93rem; }
9869− .md-pl-93 {
9870− padding-left: 93rem; }
9871− .md-pr-93 {
9872− padding-right: 93rem; }
9873− .md-pv-93 {
9874− padding-top: 93rem;
9875− padding-bottom: 93rem; }
9876− .md-ph-93 {
9877− padding-left: 93rem;
9878− padding-right: 93rem; }
9879− .md-mt-94 {
9880− margin-top: 94rem; }
9881− .md-mb-94 {
9882− margin-bottom: 94rem; }
9883− .md-ml-94 {
9884− margin-left: 94rem; }
9885− .md-mr-94 {
9886− margin-right: 94rem; }
9887− .md-mv-94 {
9888− margin-top: 94rem;
9889− margin-bottom: 94rem; }
9890− .md-mh-94 {
9891− margin-left: 94rem;
9892− margin-right: 94rem; }
9893− .md-p-94 {
9894− padding: 94rem; }
9895− .md-pt-94 {
9896− padding-top: 94rem; }
9897− .md-pb-94 {
9898− padding-bottom: 94rem; }
9899− .md-pl-94 {
9900− padding-left: 94rem; }
9901− .md-pr-94 {
9902− padding-right: 94rem; }
9903− .md-pv-94 {
9904− padding-top: 94rem;
9905− padding-bottom: 94rem; }
9906− .md-ph-94 {
9907− padding-left: 94rem;
9908− padding-right: 94rem; }
9909− .md-mt-95 {
9910− margin-top: 95rem; }
9911− .md-mb-95 {
9912− margin-bottom: 95rem; }
9913− .md-ml-95 {
9914− margin-left: 95rem; }
9915− .md-mr-95 {
9916− margin-right: 95rem; }
9917− .md-mv-95 {
9918− margin-top: 95rem;
9919− margin-bottom: 95rem; }
9920− .md-mh-95 {
9921− margin-left: 95rem;
9922− margin-right: 95rem; }
9923− .md-p-95 {
9924− padding: 95rem; }
9925− .md-pt-95 {
9926− padding-top: 95rem; }
9927− .md-pb-95 {
9928− padding-bottom: 95rem; }
9929− .md-pl-95 {
9930− padding-left: 95rem; }
9931− .md-pr-95 {
9932− padding-right: 95rem; }
9933− .md-pv-95 {
9934− padding-top: 95rem;
9935− padding-bottom: 95rem; }
9936− .md-ph-95 {
9937− padding-left: 95rem;
9938− padding-right: 95rem; }
9939− .md-mt-96 {
9940− margin-top: 96rem; }
9941− .md-mb-96 {
9942− margin-bottom: 96rem; }
9943− .md-ml-96 {
9944− margin-left: 96rem; }
9945− .md-mr-96 {
9946− margin-right: 96rem; }
9947− .md-mv-96 {
9948− margin-top: 96rem;
9949− margin-bottom: 96rem; }
9950− .md-mh-96 {
9951− margin-left: 96rem;
9952− margin-right: 96rem; }
9953− .md-p-96 {
9954− padding: 96rem; }
9955− .md-pt-96 {
9956− padding-top: 96rem; }
9957− .md-pb-96 {
9958− padding-bottom: 96rem; }
9959− .md-pl-96 {
9960− padding-left: 96rem; }
9961− .md-pr-96 {
9962− padding-right: 96rem; }
9963− .md-pv-96 {
9964− padding-top: 96rem;
9965− padding-bottom: 96rem; }
9966− .md-ph-96 {
9967− padding-left: 96rem;
9968− padding-right: 96rem; }
9969− .md-mt-97 {
9970− margin-top: 97rem; }
9971− .md-mb-97 {
9972− margin-bottom: 97rem; }
9973− .md-ml-97 {
9974− margin-left: 97rem; }
9975− .md-mr-97 {
9976− margin-right: 97rem; }
9977− .md-mv-97 {
9978− margin-top: 97rem;
9979− margin-bottom: 97rem; }
9980− .md-mh-97 {
9981− margin-left: 97rem;
9982− margin-right: 97rem; }
9983− .md-p-97 {
9984− padding: 97rem; }
9985− .md-pt-97 {
9986− padding-top: 97rem; }
9987− .md-pb-97 {
9988− padding-bottom: 97rem; }
9989− .md-pl-97 {
9990− padding-left: 97rem; }
9991− .md-pr-97 {
9992− padding-right: 97rem; }
9993− .md-pv-97 {
9994− padding-top: 97rem;
9995− padding-bottom: 97rem; }
9996− .md-ph-97 {
9997− padding-left: 97rem;
9998− padding-right: 97rem; }
9999− .md-mt-98 {
10000− margin-top: 98rem; }
10001− .md-mb-98 {
10002− margin-bottom: 98rem; }
10003− .md-ml-98 {
10004− margin-left: 98rem; }
10005− .md-mr-98 {
10006− margin-right: 98rem; }
10007− .md-mv-98 {
10008− margin-top: 98rem;
10009− margin-bottom: 98rem; }
10010− .md-mh-98 {
10011− margin-left: 98rem;
10012− margin-right: 98rem; }
10013− .md-p-98 {
10014− padding: 98rem; }
10015− .md-pt-98 {
10016− padding-top: 98rem; }
10017− .md-pb-98 {
10018− padding-bottom: 98rem; }
10019− .md-pl-98 {
10020− padding-left: 98rem; }
10021− .md-pr-98 {
10022− padding-right: 98rem; }
10023− .md-pv-98 {
10024− padding-top: 98rem;
10025− padding-bottom: 98rem; }
10026− .md-ph-98 {
10027− padding-left: 98rem;
10028− padding-right: 98rem; }
10029− .md-mt-99 {
10030− margin-top: 99rem; }
10031− .md-mb-99 {
10032− margin-bottom: 99rem; }
10033− .md-ml-99 {
10034− margin-left: 99rem; }
10035− .md-mr-99 {
10036− margin-right: 99rem; }
10037− .md-mv-99 {
10038− margin-top: 99rem;
10039− margin-bottom: 99rem; }
10040− .md-mh-99 {
10041− margin-left: 99rem;
10042− margin-right: 99rem; }
10043− .md-p-99 {
10044− padding: 99rem; }
10045− .md-pt-99 {
10046− padding-top: 99rem; }
10047− .md-pb-99 {
10048− padding-bottom: 99rem; }
10049− .md-pl-99 {
10050− padding-left: 99rem; }
10051− .md-pr-99 {
10052− padding-right: 99rem; }
10053− .md-pv-99 {
10054− padding-top: 99rem;
10055− padding-bottom: 99rem; }
10056− .md-ph-99 {
10057− padding-left: 99rem;
10058− padding-right: 99rem; } }
10059−
10060−@media only screen and (min-width: 960) {
10061− .lg-mt-0 {
10062− margin-top: 0rem; }
10063− .lg-mb-0 {
10064− margin-bottom: 0rem; }
10065− .lg-ml-0 {
10066− margin-left: 0rem; }
10067− .lg-mr-0 {
10068− margin-right: 0rem; }
10069− .lg-mv-0 {
10070− margin-top: 0rem;
10071− margin-bottom: 0rem; }
10072− .lg-mh-0 {
10073− margin-left: 0rem;
10074− margin-right: 0rem; }
10075− .lg-p-0 {
10076− padding: 0rem; }
10077− .lg-pt-0 {
10078− padding-top: 0rem; }
10079− .lg-pb-0 {
10080− padding-bottom: 0rem; }
10081− .lg-pl-0 {
10082− padding-left: 0rem; }
10083− .lg-pr-0 {
10084− padding-right: 0rem; }
10085− .lg-pv-0 {
10086− padding-top: 0rem;
10087− padding-bottom: 0rem; }
10088− .lg-ph-0 {
10089− padding-left: 0rem;
10090− padding-right: 0rem; }
10091− .lg-mt-1 {
10092− margin-top: 1rem; }
10093− .lg-mb-1 {
10094− margin-bottom: 1rem; }
10095− .lg-ml-1 {
10096− margin-left: 1rem; }
10097− .lg-mr-1 {
10098− margin-right: 1rem; }
10099− .lg-mv-1 {
10100− margin-top: 1rem;
10101− margin-bottom: 1rem; }
10102− .lg-mh-1 {
10103− margin-left: 1rem;
10104− margin-right: 1rem; }
10105− .lg-p-1 {
10106− padding: 1rem; }
10107− .lg-pt-1 {
10108− padding-top: 1rem; }
10109− .lg-pb-1 {
10110− padding-bottom: 1rem; }
10111− .lg-pl-1 {
10112− padding-left: 1rem; }
10113− .lg-pr-1 {
10114− padding-right: 1rem; }
10115− .lg-pv-1 {
10116− padding-top: 1rem;
10117− padding-bottom: 1rem; }
10118− .lg-ph-1 {
10119− padding-left: 1rem;
10120− padding-right: 1rem; }
10121− .lg-mt-2 {
10122− margin-top: 2rem; }
10123− .lg-mb-2 {
10124− margin-bottom: 2rem; }
10125− .lg-ml-2 {
10126− margin-left: 2rem; }
10127− .lg-mr-2 {
10128− margin-right: 2rem; }
10129− .lg-mv-2 {
10130− margin-top: 2rem;
10131− margin-bottom: 2rem; }
10132− .lg-mh-2 {
10133− margin-left: 2rem;
10134− margin-right: 2rem; }
10135− .lg-p-2 {
10136− padding: 2rem; }
10137− .lg-pt-2 {
10138− padding-top: 2rem; }
10139− .lg-pb-2 {
10140− padding-bottom: 2rem; }
10141− .lg-pl-2 {
10142− padding-left: 2rem; }
10143− .lg-pr-2 {
10144− padding-right: 2rem; }
10145− .lg-pv-2 {
10146− padding-top: 2rem;
10147− padding-bottom: 2rem; }
10148− .lg-ph-2 {
10149− padding-left: 2rem;
10150− padding-right: 2rem; }
10151− .lg-mt-3 {
10152− margin-top: 3rem; }
10153− .lg-mb-3 {
10154− margin-bottom: 3rem; }
10155− .lg-ml-3 {
10156− margin-left: 3rem; }
10157− .lg-mr-3 {
10158− margin-right: 3rem; }
10159− .lg-mv-3 {
10160− margin-top: 3rem;
10161− margin-bottom: 3rem; }
10162− .lg-mh-3 {
10163− margin-left: 3rem;
10164− margin-right: 3rem; }
10165− .lg-p-3 {
10166− padding: 3rem; }
10167− .lg-pt-3 {
10168− padding-top: 3rem; }
10169− .lg-pb-3 {
10170− padding-bottom: 3rem; }
10171− .lg-pl-3 {
10172− padding-left: 3rem; }
10173− .lg-pr-3 {
10174− padding-right: 3rem; }
10175− .lg-pv-3 {
10176− padding-top: 3rem;
10177− padding-bottom: 3rem; }
10178− .lg-ph-3 {
10179− padding-left: 3rem;
10180− padding-right: 3rem; }
10181− .lg-mt-4 {
10182− margin-top: 4rem; }
10183− .lg-mb-4 {
10184− margin-bottom: 4rem; }
10185− .lg-ml-4 {
10186− margin-left: 4rem; }
10187− .lg-mr-4 {
10188− margin-right: 4rem; }
10189− .lg-mv-4 {
10190− margin-top: 4rem;
10191− margin-bottom: 4rem; }
10192− .lg-mh-4 {
10193− margin-left: 4rem;
10194− margin-right: 4rem; }
10195− .lg-p-4 {
10196− padding: 4rem; }
10197− .lg-pt-4 {
10198− padding-top: 4rem; }
10199− .lg-pb-4 {
10200− padding-bottom: 4rem; }
10201− .lg-pl-4 {
10202− padding-left: 4rem; }
10203− .lg-pr-4 {
10204− padding-right: 4rem; }
10205− .lg-pv-4 {
10206− padding-top: 4rem;
10207− padding-bottom: 4rem; }
10208− .lg-ph-4 {
10209− padding-left: 4rem;
10210− padding-right: 4rem; }
10211− .lg-mt-5 {
10212− margin-top: 5rem; }
10213− .lg-mb-5 {
10214− margin-bottom: 5rem; }
10215− .lg-ml-5 {
10216− margin-left: 5rem; }
10217− .lg-mr-5 {
10218− margin-right: 5rem; }
10219− .lg-mv-5 {
10220− margin-top: 5rem;
10221− margin-bottom: 5rem; }
10222− .lg-mh-5 {
10223− margin-left: 5rem;
10224− margin-right: 5rem; }
10225− .lg-p-5 {
10226− padding: 5rem; }
10227− .lg-pt-5 {
10228− padding-top: 5rem; }
10229− .lg-pb-5 {
10230− padding-bottom: 5rem; }
10231− .lg-pl-5 {
10232− padding-left: 5rem; }
10233− .lg-pr-5 {
10234− padding-right: 5rem; }
10235− .lg-pv-5 {
10236− padding-top: 5rem;
10237− padding-bottom: 5rem; }
10238− .lg-ph-5 {
10239− padding-left: 5rem;
10240− padding-right: 5rem; }
10241− .lg-mt-6 {
10242− margin-top: 6rem; }
10243− .lg-mb-6 {
10244− margin-bottom: 6rem; }
10245− .lg-ml-6 {
10246− margin-left: 6rem; }
10247− .lg-mr-6 {
10248− margin-right: 6rem; }
10249− .lg-mv-6 {
10250− margin-top: 6rem;
10251− margin-bottom: 6rem; }
10252− .lg-mh-6 {
10253− margin-left: 6rem;
10254− margin-right: 6rem; }
10255− .lg-p-6 {
10256− padding: 6rem; }
10257− .lg-pt-6 {
10258− padding-top: 6rem; }
10259− .lg-pb-6 {
10260− padding-bottom: 6rem; }
10261− .lg-pl-6 {
10262− padding-left: 6rem; }
10263− .lg-pr-6 {
10264− padding-right: 6rem; }
10265− .lg-pv-6 {
10266− padding-top: 6rem;
10267− padding-bottom: 6rem; }
10268− .lg-ph-6 {
10269− padding-left: 6rem;
10270− padding-right: 6rem; }
10271− .lg-mt-7 {
10272− margin-top: 7rem; }
10273− .lg-mb-7 {
10274− margin-bottom: 7rem; }
10275− .lg-ml-7 {
10276− margin-left: 7rem; }
10277− .lg-mr-7 {
10278− margin-right: 7rem; }
10279− .lg-mv-7 {
10280− margin-top: 7rem;
10281− margin-bottom: 7rem; }
10282− .lg-mh-7 {
10283− margin-left: 7rem;
10284− margin-right: 7rem; }
10285− .lg-p-7 {
10286− padding: 7rem; }
10287− .lg-pt-7 {
10288− padding-top: 7rem; }
10289− .lg-pb-7 {
10290− padding-bottom: 7rem; }
10291− .lg-pl-7 {
10292− padding-left: 7rem; }
10293− .lg-pr-7 {
10294− padding-right: 7rem; }
10295− .lg-pv-7 {
10296− padding-top: 7rem;
10297− padding-bottom: 7rem; }
10298− .lg-ph-7 {
10299− padding-left: 7rem;
10300− padding-right: 7rem; }
10301− .lg-mt-8 {
10302− margin-top: 8rem; }
10303− .lg-mb-8 {
10304− margin-bottom: 8rem; }
10305− .lg-ml-8 {
10306− margin-left: 8rem; }
10307− .lg-mr-8 {
10308− margin-right: 8rem; }
10309− .lg-mv-8 {
10310− margin-top: 8rem;
10311− margin-bottom: 8rem; }
10312− .lg-mh-8 {
10313− margin-left: 8rem;
10314− margin-right: 8rem; }
10315− .lg-p-8 {
10316− padding: 8rem; }
10317− .lg-pt-8 {
10318− padding-top: 8rem; }
10319− .lg-pb-8 {
10320− padding-bottom: 8rem; }
10321− .lg-pl-8 {
10322− padding-left: 8rem; }
10323− .lg-pr-8 {
10324− padding-right: 8rem; }
10325− .lg-pv-8 {
10326− padding-top: 8rem;
10327− padding-bottom: 8rem; }
10328− .lg-ph-8 {
10329− padding-left: 8rem;
10330− padding-right: 8rem; }
10331− .lg-mt-9 {
10332− margin-top: 9rem; }
10333− .lg-mb-9 {
10334− margin-bottom: 9rem; }
10335− .lg-ml-9 {
10336− margin-left: 9rem; }
10337− .lg-mr-9 {
10338− margin-right: 9rem; }
10339− .lg-mv-9 {
10340− margin-top: 9rem;
10341− margin-bottom: 9rem; }
10342− .lg-mh-9 {
10343− margin-left: 9rem;
10344− margin-right: 9rem; }
10345− .lg-p-9 {
10346− padding: 9rem; }
10347− .lg-pt-9 {
10348− padding-top: 9rem; }
10349− .lg-pb-9 {
10350− padding-bottom: 9rem; }
10351− .lg-pl-9 {
10352− padding-left: 9rem; }
10353− .lg-pr-9 {
10354− padding-right: 9rem; }
10355− .lg-pv-9 {
10356− padding-top: 9rem;
10357− padding-bottom: 9rem; }
10358− .lg-ph-9 {
10359− padding-left: 9rem;
10360− padding-right: 9rem; }
10361− .lg-mt-10 {
10362− margin-top: 10rem; }
10363− .lg-mb-10 {
10364− margin-bottom: 10rem; }
10365− .lg-ml-10 {
10366− margin-left: 10rem; }
10367− .lg-mr-10 {
10368− margin-right: 10rem; }
10369− .lg-mv-10 {
10370− margin-top: 10rem;
10371− margin-bottom: 10rem; }
10372− .lg-mh-10 {
10373− margin-left: 10rem;
10374− margin-right: 10rem; }
10375− .lg-p-10 {
10376− padding: 10rem; }
10377− .lg-pt-10 {
10378− padding-top: 10rem; }
10379− .lg-pb-10 {
10380− padding-bottom: 10rem; }
10381− .lg-pl-10 {
10382− padding-left: 10rem; }
10383− .lg-pr-10 {
10384− padding-right: 10rem; }
10385− .lg-pv-10 {
10386− padding-top: 10rem;
10387− padding-bottom: 10rem; }
10388− .lg-ph-10 {
10389− padding-left: 10rem;
10390− padding-right: 10rem; }
10391− .lg-mt-11 {
10392− margin-top: 11rem; }
10393− .lg-mb-11 {
10394− margin-bottom: 11rem; }
10395− .lg-ml-11 {
10396− margin-left: 11rem; }
10397− .lg-mr-11 {
10398− margin-right: 11rem; }
10399− .lg-mv-11 {
10400− margin-top: 11rem;
10401− margin-bottom: 11rem; }
10402− .lg-mh-11 {
10403− margin-left: 11rem;
10404− margin-right: 11rem; }
10405− .lg-p-11 {
10406− padding: 11rem; }
10407− .lg-pt-11 {
10408− padding-top: 11rem; }
10409− .lg-pb-11 {
10410− padding-bottom: 11rem; }
10411− .lg-pl-11 {
10412− padding-left: 11rem; }
10413− .lg-pr-11 {
10414− padding-right: 11rem; }
10415− .lg-pv-11 {
10416− padding-top: 11rem;
10417− padding-bottom: 11rem; }
10418− .lg-ph-11 {
10419− padding-left: 11rem;
10420− padding-right: 11rem; }
10421− .lg-mt-12 {
10422− margin-top: 12rem; }
10423− .lg-mb-12 {
10424− margin-bottom: 12rem; }
10425− .lg-ml-12 {
10426− margin-left: 12rem; }
10427− .lg-mr-12 {
10428− margin-right: 12rem; }
10429− .lg-mv-12 {
10430− margin-top: 12rem;
10431− margin-bottom: 12rem; }
10432− .lg-mh-12 {
10433− margin-left: 12rem;
10434− margin-right: 12rem; }
10435− .lg-p-12 {
10436− padding: 12rem; }
10437− .lg-pt-12 {
10438− padding-top: 12rem; }
10439− .lg-pb-12 {
10440− padding-bottom: 12rem; }
10441− .lg-pl-12 {
10442− padding-left: 12rem; }
10443− .lg-pr-12 {
10444− padding-right: 12rem; }
10445− .lg-pv-12 {
10446− padding-top: 12rem;
10447− padding-bottom: 12rem; }
10448− .lg-ph-12 {
10449− padding-left: 12rem;
10450− padding-right: 12rem; }
10451− .lg-mt-13 {
10452− margin-top: 13rem; }
10453− .lg-mb-13 {
10454− margin-bottom: 13rem; }
10455− .lg-ml-13 {
10456− margin-left: 13rem; }
10457− .lg-mr-13 {
10458− margin-right: 13rem; }
10459− .lg-mv-13 {
10460− margin-top: 13rem;
10461− margin-bottom: 13rem; }
10462− .lg-mh-13 {
10463− margin-left: 13rem;
10464− margin-right: 13rem; }
10465− .lg-p-13 {
10466− padding: 13rem; }
10467− .lg-pt-13 {
10468− padding-top: 13rem; }
10469− .lg-pb-13 {
10470− padding-bottom: 13rem; }
10471− .lg-pl-13 {
10472− padding-left: 13rem; }
10473− .lg-pr-13 {
10474− padding-right: 13rem; }
10475− .lg-pv-13 {
10476− padding-top: 13rem;
10477− padding-bottom: 13rem; }
10478− .lg-ph-13 {
10479− padding-left: 13rem;
10480− padding-right: 13rem; }
10481− .lg-mt-14 {
10482− margin-top: 14rem; }
10483− .lg-mb-14 {
10484− margin-bottom: 14rem; }
10485− .lg-ml-14 {
10486− margin-left: 14rem; }
10487− .lg-mr-14 {
10488− margin-right: 14rem; }
10489− .lg-mv-14 {
10490− margin-top: 14rem;
10491− margin-bottom: 14rem; }
10492− .lg-mh-14 {
10493− margin-left: 14rem;
10494− margin-right: 14rem; }
10495− .lg-p-14 {
10496− padding: 14rem; }
10497− .lg-pt-14 {
10498− padding-top: 14rem; }
10499− .lg-pb-14 {
10500− padding-bottom: 14rem; }
10501− .lg-pl-14 {
10502− padding-left: 14rem; }
10503− .lg-pr-14 {
10504− padding-right: 14rem; }
10505− .lg-pv-14 {
10506− padding-top: 14rem;
10507− padding-bottom: 14rem; }
10508− .lg-ph-14 {
10509− padding-left: 14rem;
10510− padding-right: 14rem; }
10511− .lg-mt-15 {
10512− margin-top: 15rem; }
10513− .lg-mb-15 {
10514− margin-bottom: 15rem; }
10515− .lg-ml-15 {
10516− margin-left: 15rem; }
10517− .lg-mr-15 {
10518− margin-right: 15rem; }
10519− .lg-mv-15 {
10520− margin-top: 15rem;
10521− margin-bottom: 15rem; }
10522− .lg-mh-15 {
10523− margin-left: 15rem;
10524− margin-right: 15rem; }
10525− .lg-p-15 {
10526− padding: 15rem; }
10527− .lg-pt-15 {
10528− padding-top: 15rem; }
10529− .lg-pb-15 {
10530− padding-bottom: 15rem; }
10531− .lg-pl-15 {
10532− padding-left: 15rem; }
10533− .lg-pr-15 {
10534− padding-right: 15rem; }
10535− .lg-pv-15 {
10536− padding-top: 15rem;
10537− padding-bottom: 15rem; }
10538− .lg-ph-15 {
10539− padding-left: 15rem;
10540− padding-right: 15rem; }
10541− .lg-mt-16 {
10542− margin-top: 16rem; }
10543− .lg-mb-16 {
10544− margin-bottom: 16rem; }
10545− .lg-ml-16 {
10546− margin-left: 16rem; }
10547− .lg-mr-16 {
10548− margin-right: 16rem; }
10549− .lg-mv-16 {
10550− margin-top: 16rem;
10551− margin-bottom: 16rem; }
10552− .lg-mh-16 {
10553− margin-left: 16rem;
10554− margin-right: 16rem; }
10555− .lg-p-16 {
10556− padding: 16rem; }
10557− .lg-pt-16 {
10558− padding-top: 16rem; }
10559− .lg-pb-16 {
10560− padding-bottom: 16rem; }
10561− .lg-pl-16 {
10562− padding-left: 16rem; }
10563− .lg-pr-16 {
10564− padding-right: 16rem; }
10565− .lg-pv-16 {
10566− padding-top: 16rem;
10567− padding-bottom: 16rem; }
10568− .lg-ph-16 {
10569− padding-left: 16rem;
10570− padding-right: 16rem; }
10571− .lg-mt-17 {
10572− margin-top: 17rem; }
10573− .lg-mb-17 {
10574− margin-bottom: 17rem; }
10575− .lg-ml-17 {
10576− margin-left: 17rem; }
10577− .lg-mr-17 {
10578− margin-right: 17rem; }
10579− .lg-mv-17 {
10580− margin-top: 17rem;
10581− margin-bottom: 17rem; }
10582− .lg-mh-17 {
10583− margin-left: 17rem;
10584− margin-right: 17rem; }
10585− .lg-p-17 {
10586− padding: 17rem; }
10587− .lg-pt-17 {
10588− padding-top: 17rem; }
10589− .lg-pb-17 {
10590− padding-bottom: 17rem; }
10591− .lg-pl-17 {
10592− padding-left: 17rem; }
10593− .lg-pr-17 {
10594− padding-right: 17rem; }
10595− .lg-pv-17 {
10596− padding-top: 17rem;
10597− padding-bottom: 17rem; }
10598− .lg-ph-17 {
10599− padding-left: 17rem;
10600− padding-right: 17rem; }
10601− .lg-mt-18 {
10602− margin-top: 18rem; }
10603− .lg-mb-18 {
10604− margin-bottom: 18rem; }
10605− .lg-ml-18 {
10606− margin-left: 18rem; }
10607− .lg-mr-18 {
10608− margin-right: 18rem; }
10609− .lg-mv-18 {
10610− margin-top: 18rem;
10611− margin-bottom: 18rem; }
10612− .lg-mh-18 {
10613− margin-left: 18rem;
10614− margin-right: 18rem; }
10615− .lg-p-18 {
10616− padding: 18rem; }
10617− .lg-pt-18 {
10618− padding-top: 18rem; }
10619− .lg-pb-18 {
10620− padding-bottom: 18rem; }
10621− .lg-pl-18 {
10622− padding-left: 18rem; }
10623− .lg-pr-18 {
10624− padding-right: 18rem; }
10625− .lg-pv-18 {
10626− padding-top: 18rem;
10627− padding-bottom: 18rem; }
10628− .lg-ph-18 {
10629− padding-left: 18rem;
10630− padding-right: 18rem; }
10631− .lg-mt-19 {
10632− margin-top: 19rem; }
10633− .lg-mb-19 {
10634− margin-bottom: 19rem; }
10635− .lg-ml-19 {
10636− margin-left: 19rem; }
10637− .lg-mr-19 {
10638− margin-right: 19rem; }
10639− .lg-mv-19 {
10640− margin-top: 19rem;
10641− margin-bottom: 19rem; }
10642− .lg-mh-19 {
10643− margin-left: 19rem;
10644− margin-right: 19rem; }
10645− .lg-p-19 {
10646− padding: 19rem; }
10647− .lg-pt-19 {
10648− padding-top: 19rem; }
10649− .lg-pb-19 {
10650− padding-bottom: 19rem; }
10651− .lg-pl-19 {
10652− padding-left: 19rem; }
10653− .lg-pr-19 {
10654− padding-right: 19rem; }
10655− .lg-pv-19 {
10656− padding-top: 19rem;
10657− padding-bottom: 19rem; }
10658− .lg-ph-19 {
10659− padding-left: 19rem;
10660− padding-right: 19rem; }
10661− .lg-mt-20 {
10662− margin-top: 20rem; }
10663− .lg-mb-20 {
10664− margin-bottom: 20rem; }
10665− .lg-ml-20 {
10666− margin-left: 20rem; }
10667− .lg-mr-20 {
10668− margin-right: 20rem; }
10669− .lg-mv-20 {
10670− margin-top: 20rem;
10671− margin-bottom: 20rem; }
10672− .lg-mh-20 {
10673− margin-left: 20rem;
10674− margin-right: 20rem; }
10675− .lg-p-20 {
10676− padding: 20rem; }
10677− .lg-pt-20 {
10678− padding-top: 20rem; }
10679− .lg-pb-20 {
10680− padding-bottom: 20rem; }
10681− .lg-pl-20 {
10682− padding-left: 20rem; }
10683− .lg-pr-20 {
10684− padding-right: 20rem; }
10685− .lg-pv-20 {
10686− padding-top: 20rem;
10687− padding-bottom: 20rem; }
10688− .lg-ph-20 {
10689− padding-left: 20rem;
10690− padding-right: 20rem; }
10691− .lg-mt-21 {
10692− margin-top: 21rem; }
10693− .lg-mb-21 {
10694− margin-bottom: 21rem; }
10695− .lg-ml-21 {
10696− margin-left: 21rem; }
10697− .lg-mr-21 {
10698− margin-right: 21rem; }
10699− .lg-mv-21 {
10700− margin-top: 21rem;
10701− margin-bottom: 21rem; }
10702− .lg-mh-21 {
10703− margin-left: 21rem;
10704− margin-right: 21rem; }
10705− .lg-p-21 {
10706− padding: 21rem; }
10707− .lg-pt-21 {
10708− padding-top: 21rem; }
10709− .lg-pb-21 {
10710− padding-bottom: 21rem; }
10711− .lg-pl-21 {
10712− padding-left: 21rem; }
10713− .lg-pr-21 {
10714− padding-right: 21rem; }
10715− .lg-pv-21 {
10716− padding-top: 21rem;
10717− padding-bottom: 21rem; }
10718− .lg-ph-21 {
10719− padding-left: 21rem;
10720− padding-right: 21rem; }
10721− .lg-mt-22 {
10722− margin-top: 22rem; }
10723− .lg-mb-22 {
10724− margin-bottom: 22rem; }
10725− .lg-ml-22 {
10726− margin-left: 22rem; }
10727− .lg-mr-22 {
10728− margin-right: 22rem; }
10729− .lg-mv-22 {
10730− margin-top: 22rem;
10731− margin-bottom: 22rem; }
10732− .lg-mh-22 {
10733− margin-left: 22rem;
10734− margin-right: 22rem; }
10735− .lg-p-22 {
10736− padding: 22rem; }
10737− .lg-pt-22 {
10738− padding-top: 22rem; }
10739− .lg-pb-22 {
10740− padding-bottom: 22rem; }
10741− .lg-pl-22 {
10742− padding-left: 22rem; }
10743− .lg-pr-22 {
10744− padding-right: 22rem; }
10745− .lg-pv-22 {
10746− padding-top: 22rem;
10747− padding-bottom: 22rem; }
10748− .lg-ph-22 {
10749− padding-left: 22rem;
10750− padding-right: 22rem; }
10751− .lg-mt-23 {
10752− margin-top: 23rem; }
10753− .lg-mb-23 {
10754− margin-bottom: 23rem; }
10755− .lg-ml-23 {
10756− margin-left: 23rem; }
10757− .lg-mr-23 {
10758− margin-right: 23rem; }
10759− .lg-mv-23 {
10760− margin-top: 23rem;
10761− margin-bottom: 23rem; }
10762− .lg-mh-23 {
10763− margin-left: 23rem;
10764− margin-right: 23rem; }
10765− .lg-p-23 {
10766− padding: 23rem; }
10767− .lg-pt-23 {
10768− padding-top: 23rem; }
10769− .lg-pb-23 {
10770− padding-bottom: 23rem; }
10771− .lg-pl-23 {
10772− padding-left: 23rem; }
10773− .lg-pr-23 {
10774− padding-right: 23rem; }
10775− .lg-pv-23 {
10776− padding-top: 23rem;
10777− padding-bottom: 23rem; }
10778− .lg-ph-23 {
10779− padding-left: 23rem;
10780− padding-right: 23rem; }
10781− .lg-mt-24 {
10782− margin-top: 24rem; }
10783− .lg-mb-24 {
10784− margin-bottom: 24rem; }
10785− .lg-ml-24 {
10786− margin-left: 24rem; }
10787− .lg-mr-24 {
10788− margin-right: 24rem; }
10789− .lg-mv-24 {
10790− margin-top: 24rem;
10791− margin-bottom: 24rem; }
10792− .lg-mh-24 {
10793− margin-left: 24rem;
10794− margin-right: 24rem; }
10795− .lg-p-24 {
10796− padding: 24rem; }
10797− .lg-pt-24 {
10798− padding-top: 24rem; }
10799− .lg-pb-24 {
10800− padding-bottom: 24rem; }
10801− .lg-pl-24 {
10802− padding-left: 24rem; }
10803− .lg-pr-24 {
10804− padding-right: 24rem; }
10805− .lg-pv-24 {
10806− padding-top: 24rem;
10807− padding-bottom: 24rem; }
10808− .lg-ph-24 {
10809− padding-left: 24rem;
10810− padding-right: 24rem; }
10811− .lg-mt-25 {
10812− margin-top: 25rem; }
10813− .lg-mb-25 {
10814− margin-bottom: 25rem; }
10815− .lg-ml-25 {
10816− margin-left: 25rem; }
10817− .lg-mr-25 {
10818− margin-right: 25rem; }
10819− .lg-mv-25 {
10820− margin-top: 25rem;
10821− margin-bottom: 25rem; }
10822− .lg-mh-25 {
10823− margin-left: 25rem;
10824− margin-right: 25rem; }
10825− .lg-p-25 {
10826− padding: 25rem; }
10827− .lg-pt-25 {
10828− padding-top: 25rem; }
10829− .lg-pb-25 {
10830− padding-bottom: 25rem; }
10831− .lg-pl-25 {
10832− padding-left: 25rem; }
10833− .lg-pr-25 {
10834− padding-right: 25rem; }
10835− .lg-pv-25 {
10836− padding-top: 25rem;
10837− padding-bottom: 25rem; }
10838− .lg-ph-25 {
10839− padding-left: 25rem;
10840− padding-right: 25rem; }
10841− .lg-mt-26 {
10842− margin-top: 26rem; }
10843− .lg-mb-26 {
10844− margin-bottom: 26rem; }
10845− .lg-ml-26 {
10846− margin-left: 26rem; }
10847− .lg-mr-26 {
10848− margin-right: 26rem; }
10849− .lg-mv-26 {
10850− margin-top: 26rem;
10851− margin-bottom: 26rem; }
10852− .lg-mh-26 {
10853− margin-left: 26rem;
10854− margin-right: 26rem; }
10855− .lg-p-26 {
10856− padding: 26rem; }
10857− .lg-pt-26 {
10858− padding-top: 26rem; }
10859− .lg-pb-26 {
10860− padding-bottom: 26rem; }
10861− .lg-pl-26 {
10862− padding-left: 26rem; }
10863− .lg-pr-26 {
10864− padding-right: 26rem; }
10865− .lg-pv-26 {
10866− padding-top: 26rem;
10867− padding-bottom: 26rem; }
10868− .lg-ph-26 {
10869− padding-left: 26rem;
10870− padding-right: 26rem; }
10871− .lg-mt-27 {
10872− margin-top: 27rem; }
10873− .lg-mb-27 {
10874− margin-bottom: 27rem; }
10875− .lg-ml-27 {
10876− margin-left: 27rem; }
10877− .lg-mr-27 {
10878− margin-right: 27rem; }
10879− .lg-mv-27 {
10880− margin-top: 27rem;
10881− margin-bottom: 27rem; }
10882− .lg-mh-27 {
10883− margin-left: 27rem;
10884− margin-right: 27rem; }
10885− .lg-p-27 {
10886− padding: 27rem; }
10887− .lg-pt-27 {
10888− padding-top: 27rem; }
10889− .lg-pb-27 {
10890− padding-bottom: 27rem; }
10891− .lg-pl-27 {
10892− padding-left: 27rem; }
10893− .lg-pr-27 {
10894− padding-right: 27rem; }
10895− .lg-pv-27 {
10896− padding-top: 27rem;
10897− padding-bottom: 27rem; }
10898− .lg-ph-27 {
10899− padding-left: 27rem;
10900− padding-right: 27rem; }
10901− .lg-mt-28 {
10902− margin-top: 28rem; }
10903− .lg-mb-28 {
10904− margin-bottom: 28rem; }
10905− .lg-ml-28 {
10906− margin-left: 28rem; }
10907− .lg-mr-28 {
10908− margin-right: 28rem; }
10909− .lg-mv-28 {
10910− margin-top: 28rem;
10911− margin-bottom: 28rem; }
10912− .lg-mh-28 {
10913− margin-left: 28rem;
10914− margin-right: 28rem; }
10915− .lg-p-28 {
10916− padding: 28rem; }
10917− .lg-pt-28 {
10918− padding-top: 28rem; }
10919− .lg-pb-28 {
10920− padding-bottom: 28rem; }
10921− .lg-pl-28 {
10922− padding-left: 28rem; }
10923− .lg-pr-28 {
10924− padding-right: 28rem; }
10925− .lg-pv-28 {
10926− padding-top: 28rem;
10927− padding-bottom: 28rem; }
10928− .lg-ph-28 {
10929− padding-left: 28rem;
10930− padding-right: 28rem; }
10931− .lg-mt-29 {
10932− margin-top: 29rem; }
10933− .lg-mb-29 {
10934− margin-bottom: 29rem; }
10935− .lg-ml-29 {
10936− margin-left: 29rem; }
10937− .lg-mr-29 {
10938− margin-right: 29rem; }
10939− .lg-mv-29 {
10940− margin-top: 29rem;
10941− margin-bottom: 29rem; }
10942− .lg-mh-29 {
10943− margin-left: 29rem;
10944− margin-right: 29rem; }
10945− .lg-p-29 {
10946− padding: 29rem; }
10947− .lg-pt-29 {
10948− padding-top: 29rem; }
10949− .lg-pb-29 {
10950− padding-bottom: 29rem; }
10951− .lg-pl-29 {
10952− padding-left: 29rem; }
10953− .lg-pr-29 {
10954− padding-right: 29rem; }
10955− .lg-pv-29 {
10956− padding-top: 29rem;
10957− padding-bottom: 29rem; }
10958− .lg-ph-29 {
10959− padding-left: 29rem;
10960− padding-right: 29rem; }
10961− .lg-mt-30 {
10962− margin-top: 30rem; }
10963− .lg-mb-30 {
10964− margin-bottom: 30rem; }
10965− .lg-ml-30 {
10966− margin-left: 30rem; }
10967− .lg-mr-30 {
10968− margin-right: 30rem; }
10969− .lg-mv-30 {
10970− margin-top: 30rem;
10971− margin-bottom: 30rem; }
10972− .lg-mh-30 {
10973− margin-left: 30rem;
10974− margin-right: 30rem; }
10975− .lg-p-30 {
10976− padding: 30rem; }
10977− .lg-pt-30 {
10978− padding-top: 30rem; }
10979− .lg-pb-30 {
10980− padding-bottom: 30rem; }
10981− .lg-pl-30 {
10982− padding-left: 30rem; }
10983− .lg-pr-30 {
10984− padding-right: 30rem; }
10985− .lg-pv-30 {
10986− padding-top: 30rem;
10987− padding-bottom: 30rem; }
10988− .lg-ph-30 {
10989− padding-left: 30rem;
10990− padding-right: 30rem; }
10991− .lg-mt-31 {
10992− margin-top: 31rem; }
10993− .lg-mb-31 {
10994− margin-bottom: 31rem; }
10995− .lg-ml-31 {
10996− margin-left: 31rem; }
10997− .lg-mr-31 {
10998− margin-right: 31rem; }
10999− .lg-mv-31 {
11000− margin-top: 31rem;
11001− margin-bottom: 31rem; }
11002− .lg-mh-31 {
11003− margin-left: 31rem;
11004− margin-right: 31rem; }
11005− .lg-p-31 {
11006− padding: 31rem; }
11007− .lg-pt-31 {
11008− padding-top: 31rem; }
11009− .lg-pb-31 {
11010− padding-bottom: 31rem; }
11011− .lg-pl-31 {
11012− padding-left: 31rem; }
11013− .lg-pr-31 {
11014− padding-right: 31rem; }
11015− .lg-pv-31 {
11016− padding-top: 31rem;
11017− padding-bottom: 31rem; }
11018− .lg-ph-31 {
11019− padding-left: 31rem;
11020− padding-right: 31rem; }
11021− .lg-mt-32 {
11022− margin-top: 32rem; }
11023− .lg-mb-32 {
11024− margin-bottom: 32rem; }
11025− .lg-ml-32 {
11026− margin-left: 32rem; }
11027− .lg-mr-32 {
11028− margin-right: 32rem; }
11029− .lg-mv-32 {
11030− margin-top: 32rem;
11031− margin-bottom: 32rem; }
11032− .lg-mh-32 {
11033− margin-left: 32rem;
11034− margin-right: 32rem; }
11035− .lg-p-32 {
11036− padding: 32rem; }
11037− .lg-pt-32 {
11038− padding-top: 32rem; }
11039− .lg-pb-32 {
11040− padding-bottom: 32rem; }
11041− .lg-pl-32 {
11042− padding-left: 32rem; }
11043− .lg-pr-32 {
11044− padding-right: 32rem; }
11045− .lg-pv-32 {
11046− padding-top: 32rem;
11047− padding-bottom: 32rem; }
11048− .lg-ph-32 {
11049− padding-left: 32rem;
11050− padding-right: 32rem; }
11051− .lg-mt-33 {
11052− margin-top: 33rem; }
11053− .lg-mb-33 {
11054− margin-bottom: 33rem; }
11055− .lg-ml-33 {
11056− margin-left: 33rem; }
11057− .lg-mr-33 {
11058− margin-right: 33rem; }
11059− .lg-mv-33 {
11060− margin-top: 33rem;
11061− margin-bottom: 33rem; }
11062− .lg-mh-33 {
11063− margin-left: 33rem;
11064− margin-right: 33rem; }
11065− .lg-p-33 {
11066− padding: 33rem; }
11067− .lg-pt-33 {
11068− padding-top: 33rem; }
11069− .lg-pb-33 {
11070− padding-bottom: 33rem; }
11071− .lg-pl-33 {
11072− padding-left: 33rem; }
11073− .lg-pr-33 {
11074− padding-right: 33rem; }
11075− .lg-pv-33 {
11076− padding-top: 33rem;
11077− padding-bottom: 33rem; }
11078− .lg-ph-33 {
11079− padding-left: 33rem;
11080− padding-right: 33rem; }
11081− .lg-mt-34 {
11082− margin-top: 34rem; }
11083− .lg-mb-34 {
11084− margin-bottom: 34rem; }
11085− .lg-ml-34 {
11086− margin-left: 34rem; }
11087− .lg-mr-34 {
11088− margin-right: 34rem; }
11089− .lg-mv-34 {
11090− margin-top: 34rem;
11091− margin-bottom: 34rem; }
11092− .lg-mh-34 {
11093− margin-left: 34rem;
11094− margin-right: 34rem; }
11095− .lg-p-34 {
11096− padding: 34rem; }
11097− .lg-pt-34 {
11098− padding-top: 34rem; }
11099− .lg-pb-34 {
11100− padding-bottom: 34rem; }
11101− .lg-pl-34 {
11102− padding-left: 34rem; }
11103− .lg-pr-34 {
11104− padding-right: 34rem; }
11105− .lg-pv-34 {
11106− padding-top: 34rem;
11107− padding-bottom: 34rem; }
11108− .lg-ph-34 {
11109− padding-left: 34rem;
11110− padding-right: 34rem; }
11111− .lg-mt-35 {
11112− margin-top: 35rem; }
11113− .lg-mb-35 {
11114− margin-bottom: 35rem; }
11115− .lg-ml-35 {
11116− margin-left: 35rem; }
11117− .lg-mr-35 {
11118− margin-right: 35rem; }
11119− .lg-mv-35 {
11120− margin-top: 35rem;
11121− margin-bottom: 35rem; }
11122− .lg-mh-35 {
11123− margin-left: 35rem;
11124− margin-right: 35rem; }
11125− .lg-p-35 {
11126− padding: 35rem; }
11127− .lg-pt-35 {
11128− padding-top: 35rem; }
11129− .lg-pb-35 {
11130− padding-bottom: 35rem; }
11131− .lg-pl-35 {
11132− padding-left: 35rem; }
11133− .lg-pr-35 {
11134− padding-right: 35rem; }
11135− .lg-pv-35 {
11136− padding-top: 35rem;
11137− padding-bottom: 35rem; }
11138− .lg-ph-35 {
11139− padding-left: 35rem;
11140− padding-right: 35rem; }
11141− .lg-mt-36 {
11142− margin-top: 36rem; }
11143− .lg-mb-36 {
11144− margin-bottom: 36rem; }
11145− .lg-ml-36 {
11146− margin-left: 36rem; }
11147− .lg-mr-36 {
11148− margin-right: 36rem; }
11149− .lg-mv-36 {
11150− margin-top: 36rem;
11151− margin-bottom: 36rem; }
11152− .lg-mh-36 {
11153− margin-left: 36rem;
11154− margin-right: 36rem; }
11155− .lg-p-36 {
11156− padding: 36rem; }
11157− .lg-pt-36 {
11158− padding-top: 36rem; }
11159− .lg-pb-36 {
11160− padding-bottom: 36rem; }
11161− .lg-pl-36 {
11162− padding-left: 36rem; }
11163− .lg-pr-36 {
11164− padding-right: 36rem; }
11165− .lg-pv-36 {
11166− padding-top: 36rem;
11167− padding-bottom: 36rem; }
11168− .lg-ph-36 {
11169− padding-left: 36rem;
11170− padding-right: 36rem; }
11171− .lg-mt-37 {
11172− margin-top: 37rem; }
11173− .lg-mb-37 {
11174− margin-bottom: 37rem; }
11175− .lg-ml-37 {
11176− margin-left: 37rem; }
11177− .lg-mr-37 {
11178− margin-right: 37rem; }
11179− .lg-mv-37 {
11180− margin-top: 37rem;
11181− margin-bottom: 37rem; }
11182− .lg-mh-37 {
11183− margin-left: 37rem;
11184− margin-right: 37rem; }
11185− .lg-p-37 {
11186− padding: 37rem; }
11187− .lg-pt-37 {
11188− padding-top: 37rem; }
11189− .lg-pb-37 {
11190− padding-bottom: 37rem; }
11191− .lg-pl-37 {
11192− padding-left: 37rem; }
11193− .lg-pr-37 {
11194− padding-right: 37rem; }
11195− .lg-pv-37 {
11196− padding-top: 37rem;
11197− padding-bottom: 37rem; }
11198− .lg-ph-37 {
11199− padding-left: 37rem;
11200− padding-right: 37rem; }
11201− .lg-mt-38 {
11202− margin-top: 38rem; }
11203− .lg-mb-38 {
11204− margin-bottom: 38rem; }
11205− .lg-ml-38 {
11206− margin-left: 38rem; }
11207− .lg-mr-38 {
11208− margin-right: 38rem; }
11209− .lg-mv-38 {
11210− margin-top: 38rem;
11211− margin-bottom: 38rem; }
11212− .lg-mh-38 {
11213− margin-left: 38rem;
11214− margin-right: 38rem; }
11215− .lg-p-38 {
11216− padding: 38rem; }
11217− .lg-pt-38 {
11218− padding-top: 38rem; }
11219− .lg-pb-38 {
11220− padding-bottom: 38rem; }
11221− .lg-pl-38 {
11222− padding-left: 38rem; }
11223− .lg-pr-38 {
11224− padding-right: 38rem; }
11225− .lg-pv-38 {
11226− padding-top: 38rem;
11227− padding-bottom: 38rem; }
11228− .lg-ph-38 {
11229− padding-left: 38rem;
11230− padding-right: 38rem; }
11231− .lg-mt-39 {
11232− margin-top: 39rem; }
11233− .lg-mb-39 {
11234− margin-bottom: 39rem; }
11235− .lg-ml-39 {
11236− margin-left: 39rem; }
11237− .lg-mr-39 {
11238− margin-right: 39rem; }
11239− .lg-mv-39 {
11240− margin-top: 39rem;
11241− margin-bottom: 39rem; }
11242− .lg-mh-39 {
11243− margin-left: 39rem;
11244− margin-right: 39rem; }
11245− .lg-p-39 {
11246− padding: 39rem; }
11247− .lg-pt-39 {
11248− padding-top: 39rem; }
11249− .lg-pb-39 {
11250− padding-bottom: 39rem; }
11251− .lg-pl-39 {
11252− padding-left: 39rem; }
11253− .lg-pr-39 {
11254− padding-right: 39rem; }
11255− .lg-pv-39 {
11256− padding-top: 39rem;
11257− padding-bottom: 39rem; }
11258− .lg-ph-39 {
11259− padding-left: 39rem;
11260− padding-right: 39rem; }
11261− .lg-mt-40 {
11262− margin-top: 40rem; }
11263− .lg-mb-40 {
11264− margin-bottom: 40rem; }
11265− .lg-ml-40 {
11266− margin-left: 40rem; }
11267− .lg-mr-40 {
11268− margin-right: 40rem; }
11269− .lg-mv-40 {
11270− margin-top: 40rem;
11271− margin-bottom: 40rem; }
11272− .lg-mh-40 {
11273− margin-left: 40rem;
11274− margin-right: 40rem; }
11275− .lg-p-40 {
11276− padding: 40rem; }
11277− .lg-pt-40 {
11278− padding-top: 40rem; }
11279− .lg-pb-40 {
11280− padding-bottom: 40rem; }
11281− .lg-pl-40 {
11282− padding-left: 40rem; }
11283− .lg-pr-40 {
11284− padding-right: 40rem; }
11285− .lg-pv-40 {
11286− padding-top: 40rem;
11287− padding-bottom: 40rem; }
11288− .lg-ph-40 {
11289− padding-left: 40rem;
11290− padding-right: 40rem; }
11291− .lg-mt-41 {
11292− margin-top: 41rem; }
11293− .lg-mb-41 {
11294− margin-bottom: 41rem; }
11295− .lg-ml-41 {
11296− margin-left: 41rem; }
11297− .lg-mr-41 {
11298− margin-right: 41rem; }
11299− .lg-mv-41 {
11300− margin-top: 41rem;
11301− margin-bottom: 41rem; }
11302− .lg-mh-41 {
11303− margin-left: 41rem;
11304− margin-right: 41rem; }
11305− .lg-p-41 {
11306− padding: 41rem; }
11307− .lg-pt-41 {
11308− padding-top: 41rem; }
11309− .lg-pb-41 {
11310− padding-bottom: 41rem; }
11311− .lg-pl-41 {
11312− padding-left: 41rem; }
11313− .lg-pr-41 {
11314− padding-right: 41rem; }
11315− .lg-pv-41 {
11316− padding-top: 41rem;
11317− padding-bottom: 41rem; }
11318− .lg-ph-41 {
11319− padding-left: 41rem;
11320− padding-right: 41rem; }
11321− .lg-mt-42 {
11322− margin-top: 42rem; }
11323− .lg-mb-42 {
11324− margin-bottom: 42rem; }
11325− .lg-ml-42 {
11326− margin-left: 42rem; }
11327− .lg-mr-42 {
11328− margin-right: 42rem; }
11329− .lg-mv-42 {
11330− margin-top: 42rem;
11331− margin-bottom: 42rem; }
11332− .lg-mh-42 {
11333− margin-left: 42rem;
11334− margin-right: 42rem; }
11335− .lg-p-42 {
11336− padding: 42rem; }
11337− .lg-pt-42 {
11338− padding-top: 42rem; }
11339− .lg-pb-42 {
11340− padding-bottom: 42rem; }
11341− .lg-pl-42 {
11342− padding-left: 42rem; }
11343− .lg-pr-42 {
11344− padding-right: 42rem; }
11345− .lg-pv-42 {
11346− padding-top: 42rem;
11347− padding-bottom: 42rem; }
11348− .lg-ph-42 {
11349− padding-left: 42rem;
11350− padding-right: 42rem; }
11351− .lg-mt-43 {
11352− margin-top: 43rem; }
11353− .lg-mb-43 {
11354− margin-bottom: 43rem; }
11355− .lg-ml-43 {
11356− margin-left: 43rem; }
11357− .lg-mr-43 {
11358− margin-right: 43rem; }
11359− .lg-mv-43 {
11360− margin-top: 43rem;
11361− margin-bottom: 43rem; }
11362− .lg-mh-43 {
11363− margin-left: 43rem;
11364− margin-right: 43rem; }
11365− .lg-p-43 {
11366− padding: 43rem; }
11367− .lg-pt-43 {
11368− padding-top: 43rem; }
11369− .lg-pb-43 {
11370− padding-bottom: 43rem; }
11371− .lg-pl-43 {
11372− padding-left: 43rem; }
11373− .lg-pr-43 {
11374− padding-right: 43rem; }
11375− .lg-pv-43 {
11376− padding-top: 43rem;
11377− padding-bottom: 43rem; }
11378− .lg-ph-43 {
11379− padding-left: 43rem;
11380− padding-right: 43rem; }
11381− .lg-mt-44 {
11382− margin-top: 44rem; }
11383− .lg-mb-44 {
11384− margin-bottom: 44rem; }
11385− .lg-ml-44 {
11386− margin-left: 44rem; }
11387− .lg-mr-44 {
11388− margin-right: 44rem; }
11389− .lg-mv-44 {
11390− margin-top: 44rem;
11391− margin-bottom: 44rem; }
11392− .lg-mh-44 {
11393− margin-left: 44rem;
11394− margin-right: 44rem; }
11395− .lg-p-44 {
11396− padding: 44rem; }
11397− .lg-pt-44 {
11398− padding-top: 44rem; }
11399− .lg-pb-44 {
11400− padding-bottom: 44rem; }
11401− .lg-pl-44 {
11402− padding-left: 44rem; }
11403− .lg-pr-44 {
11404− padding-right: 44rem; }
11405− .lg-pv-44 {
11406− padding-top: 44rem;
11407− padding-bottom: 44rem; }
11408− .lg-ph-44 {
11409− padding-left: 44rem;
11410− padding-right: 44rem; }
11411− .lg-mt-45 {
11412− margin-top: 45rem; }
11413− .lg-mb-45 {
11414− margin-bottom: 45rem; }
11415− .lg-ml-45 {
11416− margin-left: 45rem; }
11417− .lg-mr-45 {
11418− margin-right: 45rem; }
11419− .lg-mv-45 {
11420− margin-top: 45rem;
11421− margin-bottom: 45rem; }
11422− .lg-mh-45 {
11423− margin-left: 45rem;
11424− margin-right: 45rem; }
11425− .lg-p-45 {
11426− padding: 45rem; }
11427− .lg-pt-45 {
11428− padding-top: 45rem; }
11429− .lg-pb-45 {
11430− padding-bottom: 45rem; }
11431− .lg-pl-45 {
11432− padding-left: 45rem; }
11433− .lg-pr-45 {
11434− padding-right: 45rem; }
11435− .lg-pv-45 {
11436− padding-top: 45rem;
11437− padding-bottom: 45rem; }
11438− .lg-ph-45 {
11439− padding-left: 45rem;
11440− padding-right: 45rem; }
11441− .lg-mt-46 {
11442− margin-top: 46rem; }
11443− .lg-mb-46 {
11444− margin-bottom: 46rem; }
11445− .lg-ml-46 {
11446− margin-left: 46rem; }
11447− .lg-mr-46 {
11448− margin-right: 46rem; }
11449− .lg-mv-46 {
11450− margin-top: 46rem;
11451− margin-bottom: 46rem; }
11452− .lg-mh-46 {
11453− margin-left: 46rem;
11454− margin-right: 46rem; }
11455− .lg-p-46 {
11456− padding: 46rem; }
11457− .lg-pt-46 {
11458− padding-top: 46rem; }
11459− .lg-pb-46 {
11460− padding-bottom: 46rem; }
11461− .lg-pl-46 {
11462− padding-left: 46rem; }
11463− .lg-pr-46 {
11464− padding-right: 46rem; }
11465− .lg-pv-46 {
11466− padding-top: 46rem;
11467− padding-bottom: 46rem; }
11468− .lg-ph-46 {
11469− padding-left: 46rem;
11470− padding-right: 46rem; }
11471− .lg-mt-47 {
11472− margin-top: 47rem; }
11473− .lg-mb-47 {
11474− margin-bottom: 47rem; }
11475− .lg-ml-47 {
11476− margin-left: 47rem; }
11477− .lg-mr-47 {
11478− margin-right: 47rem; }
11479− .lg-mv-47 {
11480− margin-top: 47rem;
11481− margin-bottom: 47rem; }
11482− .lg-mh-47 {
11483− margin-left: 47rem;
11484− margin-right: 47rem; }
11485− .lg-p-47 {
11486− padding: 47rem; }
11487− .lg-pt-47 {
11488− padding-top: 47rem; }
11489− .lg-pb-47 {
11490− padding-bottom: 47rem; }
11491− .lg-pl-47 {
11492− padding-left: 47rem; }
11493− .lg-pr-47 {
11494− padding-right: 47rem; }
11495− .lg-pv-47 {
11496− padding-top: 47rem;
11497− padding-bottom: 47rem; }
11498− .lg-ph-47 {
11499− padding-left: 47rem;
11500− padding-right: 47rem; }
11501− .lg-mt-48 {
11502− margin-top: 48rem; }
11503− .lg-mb-48 {
11504− margin-bottom: 48rem; }
11505− .lg-ml-48 {
11506− margin-left: 48rem; }
11507− .lg-mr-48 {
11508− margin-right: 48rem; }
11509− .lg-mv-48 {
11510− margin-top: 48rem;
11511− margin-bottom: 48rem; }
11512− .lg-mh-48 {
11513− margin-left: 48rem;
11514− margin-right: 48rem; }
11515− .lg-p-48 {
11516− padding: 48rem; }
11517− .lg-pt-48 {
11518− padding-top: 48rem; }
11519− .lg-pb-48 {
11520− padding-bottom: 48rem; }
11521− .lg-pl-48 {
11522− padding-left: 48rem; }
11523− .lg-pr-48 {
11524− padding-right: 48rem; }
11525− .lg-pv-48 {
11526− padding-top: 48rem;
11527− padding-bottom: 48rem; }
11528− .lg-ph-48 {
11529− padding-left: 48rem;
11530− padding-right: 48rem; }
11531− .lg-mt-49 {
11532− margin-top: 49rem; }
11533− .lg-mb-49 {
11534− margin-bottom: 49rem; }
11535− .lg-ml-49 {
11536− margin-left: 49rem; }
11537− .lg-mr-49 {
11538− margin-right: 49rem; }
11539− .lg-mv-49 {
11540− margin-top: 49rem;
11541− margin-bottom: 49rem; }
11542− .lg-mh-49 {
11543− margin-left: 49rem;
11544− margin-right: 49rem; }
11545− .lg-p-49 {
11546− padding: 49rem; }
11547− .lg-pt-49 {
11548− padding-top: 49rem; }
11549− .lg-pb-49 {
11550− padding-bottom: 49rem; }
11551− .lg-pl-49 {
11552− padding-left: 49rem; }
11553− .lg-pr-49 {
11554− padding-right: 49rem; }
11555− .lg-pv-49 {
11556− padding-top: 49rem;
11557− padding-bottom: 49rem; }
11558− .lg-ph-49 {
11559− padding-left: 49rem;
11560− padding-right: 49rem; }
11561− .lg-mt-50 {
11562− margin-top: 50rem; }
11563− .lg-mb-50 {
11564− margin-bottom: 50rem; }
11565− .lg-ml-50 {
11566− margin-left: 50rem; }
11567− .lg-mr-50 {
11568− margin-right: 50rem; }
11569− .lg-mv-50 {
11570− margin-top: 50rem;
11571− margin-bottom: 50rem; }
11572− .lg-mh-50 {
11573− margin-left: 50rem;
11574− margin-right: 50rem; }
11575− .lg-p-50 {
11576− padding: 50rem; }
11577− .lg-pt-50 {
11578− padding-top: 50rem; }
11579− .lg-pb-50 {
11580− padding-bottom: 50rem; }
11581− .lg-pl-50 {
11582− padding-left: 50rem; }
11583− .lg-pr-50 {
11584− padding-right: 50rem; }
11585− .lg-pv-50 {
11586− padding-top: 50rem;
11587− padding-bottom: 50rem; }
11588− .lg-ph-50 {
11589− padding-left: 50rem;
11590− padding-right: 50rem; }
11591− .lg-mt-51 {
11592− margin-top: 51rem; }
11593− .lg-mb-51 {
11594− margin-bottom: 51rem; }
11595− .lg-ml-51 {
11596− margin-left: 51rem; }
11597− .lg-mr-51 {
11598− margin-right: 51rem; }
11599− .lg-mv-51 {
11600− margin-top: 51rem;
11601− margin-bottom: 51rem; }
11602− .lg-mh-51 {
11603− margin-left: 51rem;
11604− margin-right: 51rem; }
11605− .lg-p-51 {
11606− padding: 51rem; }
11607− .lg-pt-51 {
11608− padding-top: 51rem; }
11609− .lg-pb-51 {
11610− padding-bottom: 51rem; }
11611− .lg-pl-51 {
11612− padding-left: 51rem; }
11613− .lg-pr-51 {
11614− padding-right: 51rem; }
11615− .lg-pv-51 {
11616− padding-top: 51rem;
11617− padding-bottom: 51rem; }
11618− .lg-ph-51 {
11619− padding-left: 51rem;
11620− padding-right: 51rem; }
11621− .lg-mt-52 {
11622− margin-top: 52rem; }
11623− .lg-mb-52 {
11624− margin-bottom: 52rem; }
11625− .lg-ml-52 {
11626− margin-left: 52rem; }
11627− .lg-mr-52 {
11628− margin-right: 52rem; }
11629− .lg-mv-52 {
11630− margin-top: 52rem;
11631− margin-bottom: 52rem; }
11632− .lg-mh-52 {
11633− margin-left: 52rem;
11634− margin-right: 52rem; }
11635− .lg-p-52 {
11636− padding: 52rem; }
11637− .lg-pt-52 {
11638− padding-top: 52rem; }
11639− .lg-pb-52 {
11640− padding-bottom: 52rem; }
11641− .lg-pl-52 {
11642− padding-left: 52rem; }
11643− .lg-pr-52 {
11644− padding-right: 52rem; }
11645− .lg-pv-52 {
11646− padding-top: 52rem;
11647− padding-bottom: 52rem; }
11648− .lg-ph-52 {
11649− padding-left: 52rem;
11650− padding-right: 52rem; }
11651− .lg-mt-53 {
11652− margin-top: 53rem; }
11653− .lg-mb-53 {
11654− margin-bottom: 53rem; }
11655− .lg-ml-53 {
11656− margin-left: 53rem; }
11657− .lg-mr-53 {
11658− margin-right: 53rem; }
11659− .lg-mv-53 {
11660− margin-top: 53rem;
11661− margin-bottom: 53rem; }
11662− .lg-mh-53 {
11663− margin-left: 53rem;
11664− margin-right: 53rem; }
11665− .lg-p-53 {
11666− padding: 53rem; }
11667− .lg-pt-53 {
11668− padding-top: 53rem; }
11669− .lg-pb-53 {
11670− padding-bottom: 53rem; }
11671− .lg-pl-53 {
11672− padding-left: 53rem; }
11673− .lg-pr-53 {
11674− padding-right: 53rem; }
11675− .lg-pv-53 {
11676− padding-top: 53rem;
11677− padding-bottom: 53rem; }
11678− .lg-ph-53 {
11679− padding-left: 53rem;
11680− padding-right: 53rem; }
11681− .lg-mt-54 {
11682− margin-top: 54rem; }
11683− .lg-mb-54 {
11684− margin-bottom: 54rem; }
11685− .lg-ml-54 {
11686− margin-left: 54rem; }
11687− .lg-mr-54 {
11688− margin-right: 54rem; }
11689− .lg-mv-54 {
11690− margin-top: 54rem;
11691− margin-bottom: 54rem; }
11692− .lg-mh-54 {
11693− margin-left: 54rem;
11694− margin-right: 54rem; }
11695− .lg-p-54 {
11696− padding: 54rem; }
11697− .lg-pt-54 {
11698− padding-top: 54rem; }
11699− .lg-pb-54 {
11700− padding-bottom: 54rem; }
11701− .lg-pl-54 {
11702− padding-left: 54rem; }
11703− .lg-pr-54 {
11704− padding-right: 54rem; }
11705− .lg-pv-54 {
11706− padding-top: 54rem;
11707− padding-bottom: 54rem; }
11708− .lg-ph-54 {
11709− padding-left: 54rem;
11710− padding-right: 54rem; }
11711− .lg-mt-55 {
11712− margin-top: 55rem; }
11713− .lg-mb-55 {
11714− margin-bottom: 55rem; }
11715− .lg-ml-55 {
11716− margin-left: 55rem; }
11717− .lg-mr-55 {
11718− margin-right: 55rem; }
11719− .lg-mv-55 {
11720− margin-top: 55rem;
11721− margin-bottom: 55rem; }
11722− .lg-mh-55 {
11723− margin-left: 55rem;
11724− margin-right: 55rem; }
11725− .lg-p-55 {
11726− padding: 55rem; }
11727− .lg-pt-55 {
11728− padding-top: 55rem; }
11729− .lg-pb-55 {
11730− padding-bottom: 55rem; }
11731− .lg-pl-55 {
11732− padding-left: 55rem; }
11733− .lg-pr-55 {
11734− padding-right: 55rem; }
11735− .lg-pv-55 {
11736− padding-top: 55rem;
11737− padding-bottom: 55rem; }
11738− .lg-ph-55 {
11739− padding-left: 55rem;
11740− padding-right: 55rem; }
11741− .lg-mt-56 {
11742− margin-top: 56rem; }
11743− .lg-mb-56 {
11744− margin-bottom: 56rem; }
11745− .lg-ml-56 {
11746− margin-left: 56rem; }
11747− .lg-mr-56 {
11748− margin-right: 56rem; }
11749− .lg-mv-56 {
11750− margin-top: 56rem;
11751− margin-bottom: 56rem; }
11752− .lg-mh-56 {
11753− margin-left: 56rem;
11754− margin-right: 56rem; }
11755− .lg-p-56 {
11756− padding: 56rem; }
11757− .lg-pt-56 {
11758− padding-top: 56rem; }
11759− .lg-pb-56 {
11760− padding-bottom: 56rem; }
11761− .lg-pl-56 {
11762− padding-left: 56rem; }
11763− .lg-pr-56 {
11764− padding-right: 56rem; }
11765− .lg-pv-56 {
11766− padding-top: 56rem;
11767− padding-bottom: 56rem; }
11768− .lg-ph-56 {
11769− padding-left: 56rem;
11770− padding-right: 56rem; }
11771− .lg-mt-57 {
11772− margin-top: 57rem; }
11773− .lg-mb-57 {
11774− margin-bottom: 57rem; }
11775− .lg-ml-57 {
11776− margin-left: 57rem; }
11777− .lg-mr-57 {
11778− margin-right: 57rem; }
11779− .lg-mv-57 {
11780− margin-top: 57rem;
11781− margin-bottom: 57rem; }
11782− .lg-mh-57 {
11783− margin-left: 57rem;
11784− margin-right: 57rem; }
11785− .lg-p-57 {
11786− padding: 57rem; }
11787− .lg-pt-57 {
11788− padding-top: 57rem; }
11789− .lg-pb-57 {
11790− padding-bottom: 57rem; }
11791− .lg-pl-57 {
11792− padding-left: 57rem; }
11793− .lg-pr-57 {
11794− padding-right: 57rem; }
11795− .lg-pv-57 {
11796− padding-top: 57rem;
11797− padding-bottom: 57rem; }
11798− .lg-ph-57 {
11799− padding-left: 57rem;
11800− padding-right: 57rem; }
11801− .lg-mt-58 {
11802− margin-top: 58rem; }
11803− .lg-mb-58 {
11804− margin-bottom: 58rem; }
11805− .lg-ml-58 {
11806− margin-left: 58rem; }
11807− .lg-mr-58 {
11808− margin-right: 58rem; }
11809− .lg-mv-58 {
11810− margin-top: 58rem;
11811− margin-bottom: 58rem; }
11812− .lg-mh-58 {
11813− margin-left: 58rem;
11814− margin-right: 58rem; }
11815− .lg-p-58 {
11816− padding: 58rem; }
11817− .lg-pt-58 {
11818− padding-top: 58rem; }
11819− .lg-pb-58 {
11820− padding-bottom: 58rem; }
11821− .lg-pl-58 {
11822− padding-left: 58rem; }
11823− .lg-pr-58 {
11824− padding-right: 58rem; }
11825− .lg-pv-58 {
11826− padding-top: 58rem;
11827− padding-bottom: 58rem; }
11828− .lg-ph-58 {
11829− padding-left: 58rem;
11830− padding-right: 58rem; }
11831− .lg-mt-59 {
11832− margin-top: 59rem; }
11833− .lg-mb-59 {
11834− margin-bottom: 59rem; }
11835− .lg-ml-59 {
11836− margin-left: 59rem; }
11837− .lg-mr-59 {
11838− margin-right: 59rem; }
11839− .lg-mv-59 {
11840− margin-top: 59rem;
11841− margin-bottom: 59rem; }
11842− .lg-mh-59 {
11843− margin-left: 59rem;
11844− margin-right: 59rem; }
11845− .lg-p-59 {
11846− padding: 59rem; }
11847− .lg-pt-59 {
11848− padding-top: 59rem; }
11849− .lg-pb-59 {
11850− padding-bottom: 59rem; }
11851− .lg-pl-59 {
11852− padding-left: 59rem; }
11853− .lg-pr-59 {
11854− padding-right: 59rem; }
11855− .lg-pv-59 {
11856− padding-top: 59rem;
11857− padding-bottom: 59rem; }
11858− .lg-ph-59 {
11859− padding-left: 59rem;
11860− padding-right: 59rem; }
11861− .lg-mt-60 {
11862− margin-top: 60rem; }
11863− .lg-mb-60 {
11864− margin-bottom: 60rem; }
11865− .lg-ml-60 {
11866− margin-left: 60rem; }
11867− .lg-mr-60 {
11868− margin-right: 60rem; }
11869− .lg-mv-60 {
11870− margin-top: 60rem;
11871− margin-bottom: 60rem; }
11872− .lg-mh-60 {
11873− margin-left: 60rem;
11874− margin-right: 60rem; }
11875− .lg-p-60 {
11876− padding: 60rem; }
11877− .lg-pt-60 {
11878− padding-top: 60rem; }
11879− .lg-pb-60 {
11880− padding-bottom: 60rem; }
11881− .lg-pl-60 {
11882− padding-left: 60rem; }
11883− .lg-pr-60 {
11884− padding-right: 60rem; }
11885− .lg-pv-60 {
11886− padding-top: 60rem;
11887− padding-bottom: 60rem; }
11888− .lg-ph-60 {
11889− padding-left: 60rem;
11890− padding-right: 60rem; }
11891− .lg-mt-61 {
11892− margin-top: 61rem; }
11893− .lg-mb-61 {
11894− margin-bottom: 61rem; }
11895− .lg-ml-61 {
11896− margin-left: 61rem; }
11897− .lg-mr-61 {
11898− margin-right: 61rem; }
11899− .lg-mv-61 {
11900− margin-top: 61rem;
11901− margin-bottom: 61rem; }
11902− .lg-mh-61 {
11903− margin-left: 61rem;
11904− margin-right: 61rem; }
11905− .lg-p-61 {
11906− padding: 61rem; }
11907− .lg-pt-61 {
11908− padding-top: 61rem; }
11909− .lg-pb-61 {
11910− padding-bottom: 61rem; }
11911− .lg-pl-61 {
11912− padding-left: 61rem; }
11913− .lg-pr-61 {
11914− padding-right: 61rem; }
11915− .lg-pv-61 {
11916− padding-top: 61rem;
11917− padding-bottom: 61rem; }
11918− .lg-ph-61 {
11919− padding-left: 61rem;
11920− padding-right: 61rem; }
11921− .lg-mt-62 {
11922− margin-top: 62rem; }
11923− .lg-mb-62 {
11924− margin-bottom: 62rem; }
11925− .lg-ml-62 {
11926− margin-left: 62rem; }
11927− .lg-mr-62 {
11928− margin-right: 62rem; }
11929− .lg-mv-62 {
11930− margin-top: 62rem;
11931− margin-bottom: 62rem; }
11932− .lg-mh-62 {
11933− margin-left: 62rem;
11934− margin-right: 62rem; }
11935− .lg-p-62 {
11936− padding: 62rem; }
11937− .lg-pt-62 {
11938− padding-top: 62rem; }
11939− .lg-pb-62 {
11940− padding-bottom: 62rem; }
11941− .lg-pl-62 {
11942− padding-left: 62rem; }
11943− .lg-pr-62 {
11944− padding-right: 62rem; }
11945− .lg-pv-62 {
11946− padding-top: 62rem;
11947− padding-bottom: 62rem; }
11948− .lg-ph-62 {
11949− padding-left: 62rem;
11950− padding-right: 62rem; }
11951− .lg-mt-63 {
11952− margin-top: 63rem; }
11953− .lg-mb-63 {
11954− margin-bottom: 63rem; }
11955− .lg-ml-63 {
11956− margin-left: 63rem; }
11957− .lg-mr-63 {
11958− margin-right: 63rem; }
11959− .lg-mv-63 {
11960− margin-top: 63rem;
11961− margin-bottom: 63rem; }
11962− .lg-mh-63 {
11963− margin-left: 63rem;
11964− margin-right: 63rem; }
11965− .lg-p-63 {
11966− padding: 63rem; }
11967− .lg-pt-63 {
11968− padding-top: 63rem; }
11969− .lg-pb-63 {
11970− padding-bottom: 63rem; }
11971− .lg-pl-63 {
11972− padding-left: 63rem; }
11973− .lg-pr-63 {
11974− padding-right: 63rem; }
11975− .lg-pv-63 {
11976− padding-top: 63rem;
11977− padding-bottom: 63rem; }
11978− .lg-ph-63 {
11979− padding-left: 63rem;
11980− padding-right: 63rem; }
11981− .lg-mt-64 {
11982− margin-top: 64rem; }
11983− .lg-mb-64 {
11984− margin-bottom: 64rem; }
11985− .lg-ml-64 {
11986− margin-left: 64rem; }
11987− .lg-mr-64 {
11988− margin-right: 64rem; }
11989− .lg-mv-64 {
11990− margin-top: 64rem;
11991− margin-bottom: 64rem; }
11992− .lg-mh-64 {
11993− margin-left: 64rem;
11994− margin-right: 64rem; }
11995− .lg-p-64 {
11996− padding: 64rem; }
11997− .lg-pt-64 {
11998− padding-top: 64rem; }
11999− .lg-pb-64 {
12000− padding-bottom: 64rem; }
12001− .lg-pl-64 {
12002− padding-left: 64rem; }
12003− .lg-pr-64 {
12004− padding-right: 64rem; }
12005− .lg-pv-64 {
12006− padding-top: 64rem;
12007− padding-bottom: 64rem; }
12008− .lg-ph-64 {
12009− padding-left: 64rem;
12010− padding-right: 64rem; }
12011− .lg-mt-65 {
12012− margin-top: 65rem; }
12013− .lg-mb-65 {
12014− margin-bottom: 65rem; }
12015− .lg-ml-65 {
12016− margin-left: 65rem; }
12017− .lg-mr-65 {
12018− margin-right: 65rem; }
12019− .lg-mv-65 {
12020− margin-top: 65rem;
12021− margin-bottom: 65rem; }
12022− .lg-mh-65 {
12023− margin-left: 65rem;
12024− margin-right: 65rem; }
12025− .lg-p-65 {
12026− padding: 65rem; }
12027− .lg-pt-65 {
12028− padding-top: 65rem; }
12029− .lg-pb-65 {
12030− padding-bottom: 65rem; }
12031− .lg-pl-65 {
12032− padding-left: 65rem; }
12033− .lg-pr-65 {
12034− padding-right: 65rem; }
12035− .lg-pv-65 {
12036− padding-top: 65rem;
12037− padding-bottom: 65rem; }
12038− .lg-ph-65 {
12039− padding-left: 65rem;
12040− padding-right: 65rem; }
12041− .lg-mt-66 {
12042− margin-top: 66rem; }
12043− .lg-mb-66 {
12044− margin-bottom: 66rem; }
12045− .lg-ml-66 {
12046− margin-left: 66rem; }
12047− .lg-mr-66 {
12048− margin-right: 66rem; }
12049− .lg-mv-66 {
12050− margin-top: 66rem;
12051− margin-bottom: 66rem; }
12052− .lg-mh-66 {
12053− margin-left: 66rem;
12054− margin-right: 66rem; }
12055− .lg-p-66 {
12056− padding: 66rem; }
12057− .lg-pt-66 {
12058− padding-top: 66rem; }
12059− .lg-pb-66 {
12060− padding-bottom: 66rem; }
12061− .lg-pl-66 {
12062− padding-left: 66rem; }
12063− .lg-pr-66 {
12064− padding-right: 66rem; }
12065− .lg-pv-66 {
12066− padding-top: 66rem;
12067− padding-bottom: 66rem; }
12068− .lg-ph-66 {
12069− padding-left: 66rem;
12070− padding-right: 66rem; }
12071− .lg-mt-67 {
12072− margin-top: 67rem; }
12073− .lg-mb-67 {
12074− margin-bottom: 67rem; }
12075− .lg-ml-67 {
12076− margin-left: 67rem; }
12077− .lg-mr-67 {
12078− margin-right: 67rem; }
12079− .lg-mv-67 {
12080− margin-top: 67rem;
12081− margin-bottom: 67rem; }
12082− .lg-mh-67 {
12083− margin-left: 67rem;
12084− margin-right: 67rem; }
12085− .lg-p-67 {
12086− padding: 67rem; }
12087− .lg-pt-67 {
12088− padding-top: 67rem; }
12089− .lg-pb-67 {
12090− padding-bottom: 67rem; }
12091− .lg-pl-67 {
12092− padding-left: 67rem; }
12093− .lg-pr-67 {
12094− padding-right: 67rem; }
12095− .lg-pv-67 {
12096− padding-top: 67rem;
12097− padding-bottom: 67rem; }
12098− .lg-ph-67 {
12099− padding-left: 67rem;
12100− padding-right: 67rem; }
12101− .lg-mt-68 {
12102− margin-top: 68rem; }
12103− .lg-mb-68 {
12104− margin-bottom: 68rem; }
12105− .lg-ml-68 {
12106− margin-left: 68rem; }
12107− .lg-mr-68 {
12108− margin-right: 68rem; }
12109− .lg-mv-68 {
12110− margin-top: 68rem;
12111− margin-bottom: 68rem; }
12112− .lg-mh-68 {
12113− margin-left: 68rem;
12114− margin-right: 68rem; }
12115− .lg-p-68 {
12116− padding: 68rem; }
12117− .lg-pt-68 {
12118− padding-top: 68rem; }
12119− .lg-pb-68 {
12120− padding-bottom: 68rem; }
12121− .lg-pl-68 {
12122− padding-left: 68rem; }
12123− .lg-pr-68 {
12124− padding-right: 68rem; }
12125− .lg-pv-68 {
12126− padding-top: 68rem;
12127− padding-bottom: 68rem; }
12128− .lg-ph-68 {
12129− padding-left: 68rem;
12130− padding-right: 68rem; }
12131− .lg-mt-69 {
12132− margin-top: 69rem; }
12133− .lg-mb-69 {
12134− margin-bottom: 69rem; }
12135− .lg-ml-69 {
12136− margin-left: 69rem; }
12137− .lg-mr-69 {
12138− margin-right: 69rem; }
12139− .lg-mv-69 {
12140− margin-top: 69rem;
12141− margin-bottom: 69rem; }
12142− .lg-mh-69 {
12143− margin-left: 69rem;
12144− margin-right: 69rem; }
12145− .lg-p-69 {
12146− padding: 69rem; }
12147− .lg-pt-69 {
12148− padding-top: 69rem; }
12149− .lg-pb-69 {
12150− padding-bottom: 69rem; }
12151− .lg-pl-69 {
12152− padding-left: 69rem; }
12153− .lg-pr-69 {
12154− padding-right: 69rem; }
12155− .lg-pv-69 {
12156− padding-top: 69rem;
12157− padding-bottom: 69rem; }
12158− .lg-ph-69 {
12159− padding-left: 69rem;
12160− padding-right: 69rem; }
12161− .lg-mt-70 {
12162− margin-top: 70rem; }
12163− .lg-mb-70 {
12164− margin-bottom: 70rem; }
12165− .lg-ml-70 {
12166− margin-left: 70rem; }
12167− .lg-mr-70 {
12168− margin-right: 70rem; }
12169− .lg-mv-70 {
12170− margin-top: 70rem;
12171− margin-bottom: 70rem; }
12172− .lg-mh-70 {
12173− margin-left: 70rem;
12174− margin-right: 70rem; }
12175− .lg-p-70 {
12176− padding: 70rem; }
12177− .lg-pt-70 {
12178− padding-top: 70rem; }
12179− .lg-pb-70 {
12180− padding-bottom: 70rem; }
12181− .lg-pl-70 {
12182− padding-left: 70rem; }
12183− .lg-pr-70 {
12184− padding-right: 70rem; }
12185− .lg-pv-70 {
12186− padding-top: 70rem;
12187− padding-bottom: 70rem; }
12188− .lg-ph-70 {
12189− padding-left: 70rem;
12190− padding-right: 70rem; }
12191− .lg-mt-71 {
12192− margin-top: 71rem; }
12193− .lg-mb-71 {
12194− margin-bottom: 71rem; }
12195− .lg-ml-71 {
12196− margin-left: 71rem; }
12197− .lg-mr-71 {
12198− margin-right: 71rem; }
12199− .lg-mv-71 {
12200− margin-top: 71rem;
12201− margin-bottom: 71rem; }
12202− .lg-mh-71 {
12203− margin-left: 71rem;
12204− margin-right: 71rem; }
12205− .lg-p-71 {
12206− padding: 71rem; }
12207− .lg-pt-71 {
12208− padding-top: 71rem; }
12209− .lg-pb-71 {
12210− padding-bottom: 71rem; }
12211− .lg-pl-71 {
12212− padding-left: 71rem; }
12213− .lg-pr-71 {
12214− padding-right: 71rem; }
12215− .lg-pv-71 {
12216− padding-top: 71rem;
12217− padding-bottom: 71rem; }
12218− .lg-ph-71 {
12219− padding-left: 71rem;
12220− padding-right: 71rem; }
12221− .lg-mt-72 {
12222− margin-top: 72rem; }
12223− .lg-mb-72 {
12224− margin-bottom: 72rem; }
12225− .lg-ml-72 {
12226− margin-left: 72rem; }
12227− .lg-mr-72 {
12228− margin-right: 72rem; }
12229− .lg-mv-72 {
12230− margin-top: 72rem;
12231− margin-bottom: 72rem; }
12232− .lg-mh-72 {
12233− margin-left: 72rem;
12234− margin-right: 72rem; }
12235− .lg-p-72 {
12236− padding: 72rem; }
12237− .lg-pt-72 {
12238− padding-top: 72rem; }
12239− .lg-pb-72 {
12240− padding-bottom: 72rem; }
12241− .lg-pl-72 {
12242− padding-left: 72rem; }
12243− .lg-pr-72 {
12244− padding-right: 72rem; }
12245− .lg-pv-72 {
12246− padding-top: 72rem;
12247− padding-bottom: 72rem; }
12248− .lg-ph-72 {
12249− padding-left: 72rem;
12250− padding-right: 72rem; }
12251− .lg-mt-73 {
12252− margin-top: 73rem; }
12253− .lg-mb-73 {
12254− margin-bottom: 73rem; }
12255− .lg-ml-73 {
12256− margin-left: 73rem; }
12257− .lg-mr-73 {
12258− margin-right: 73rem; }
12259− .lg-mv-73 {
12260− margin-top: 73rem;
12261− margin-bottom: 73rem; }
12262− .lg-mh-73 {
12263− margin-left: 73rem;
12264− margin-right: 73rem; }
12265− .lg-p-73 {
12266− padding: 73rem; }
12267− .lg-pt-73 {
12268− padding-top: 73rem; }
12269− .lg-pb-73 {
12270− padding-bottom: 73rem; }
12271− .lg-pl-73 {
12272− padding-left: 73rem; }
12273− .lg-pr-73 {
12274− padding-right: 73rem; }
12275− .lg-pv-73 {
12276− padding-top: 73rem;
12277− padding-bottom: 73rem; }
12278− .lg-ph-73 {
12279− padding-left: 73rem;
12280− padding-right: 73rem; }
12281− .lg-mt-74 {
12282− margin-top: 74rem; }
12283− .lg-mb-74 {
12284− margin-bottom: 74rem; }
12285− .lg-ml-74 {
12286− margin-left: 74rem; }
12287− .lg-mr-74 {
12288− margin-right: 74rem; }
12289− .lg-mv-74 {
12290− margin-top: 74rem;
12291− margin-bottom: 74rem; }
12292− .lg-mh-74 {
12293− margin-left: 74rem;
12294− margin-right: 74rem; }
12295− .lg-p-74 {
12296− padding: 74rem; }
12297− .lg-pt-74 {
12298− padding-top: 74rem; }
12299− .lg-pb-74 {
12300− padding-bottom: 74rem; }
12301− .lg-pl-74 {
12302− padding-left: 74rem; }
12303− .lg-pr-74 {
12304− padding-right: 74rem; }
12305− .lg-pv-74 {
12306− padding-top: 74rem;
12307− padding-bottom: 74rem; }
12308− .lg-ph-74 {
12309− padding-left: 74rem;
12310− padding-right: 74rem; }
12311− .lg-mt-75 {
12312− margin-top: 75rem; }
12313− .lg-mb-75 {
12314− margin-bottom: 75rem; }
12315− .lg-ml-75 {
12316− margin-left: 75rem; }
12317− .lg-mr-75 {
12318− margin-right: 75rem; }
12319− .lg-mv-75 {
12320− margin-top: 75rem;
12321− margin-bottom: 75rem; }
12322− .lg-mh-75 {
12323− margin-left: 75rem;
12324− margin-right: 75rem; }
12325− .lg-p-75 {
12326− padding: 75rem; }
12327− .lg-pt-75 {
12328− padding-top: 75rem; }
12329− .lg-pb-75 {
12330− padding-bottom: 75rem; }
12331− .lg-pl-75 {
12332− padding-left: 75rem; }
12333− .lg-pr-75 {
12334− padding-right: 75rem; }
12335− .lg-pv-75 {
12336− padding-top: 75rem;
12337− padding-bottom: 75rem; }
12338− .lg-ph-75 {
12339− padding-left: 75rem;
12340− padding-right: 75rem; }
12341− .lg-mt-76 {
12342− margin-top: 76rem; }
12343− .lg-mb-76 {
12344− margin-bottom: 76rem; }
12345− .lg-ml-76 {
12346− margin-left: 76rem; }
12347− .lg-mr-76 {
12348− margin-right: 76rem; }
12349− .lg-mv-76 {
12350− margin-top: 76rem;
12351− margin-bottom: 76rem; }
12352− .lg-mh-76 {
12353− margin-left: 76rem;
12354− margin-right: 76rem; }
12355− .lg-p-76 {
12356− padding: 76rem; }
12357− .lg-pt-76 {
12358− padding-top: 76rem; }
12359− .lg-pb-76 {
12360− padding-bottom: 76rem; }
12361− .lg-pl-76 {
12362− padding-left: 76rem; }
12363− .lg-pr-76 {
12364− padding-right: 76rem; }
12365− .lg-pv-76 {
12366− padding-top: 76rem;
12367− padding-bottom: 76rem; }
12368− .lg-ph-76 {
12369− padding-left: 76rem;
12370− padding-right: 76rem; }
12371− .lg-mt-77 {
12372− margin-top: 77rem; }
12373− .lg-mb-77 {
12374− margin-bottom: 77rem; }
12375− .lg-ml-77 {
12376− margin-left: 77rem; }
12377− .lg-mr-77 {
12378− margin-right: 77rem; }
12379− .lg-mv-77 {
12380− margin-top: 77rem;
12381− margin-bottom: 77rem; }
12382− .lg-mh-77 {
12383− margin-left: 77rem;
12384− margin-right: 77rem; }
12385− .lg-p-77 {
12386− padding: 77rem; }
12387− .lg-pt-77 {
12388− padding-top: 77rem; }
12389− .lg-pb-77 {
12390− padding-bottom: 77rem; }
12391− .lg-pl-77 {
12392− padding-left: 77rem; }
12393− .lg-pr-77 {
12394− padding-right: 77rem; }
12395− .lg-pv-77 {
12396− padding-top: 77rem;
12397− padding-bottom: 77rem; }
12398− .lg-ph-77 {
12399− padding-left: 77rem;
12400− padding-right: 77rem; }
12401− .lg-mt-78 {
12402− margin-top: 78rem; }
12403− .lg-mb-78 {
12404− margin-bottom: 78rem; }
12405− .lg-ml-78 {
12406− margin-left: 78rem; }
12407− .lg-mr-78 {
12408− margin-right: 78rem; }
12409− .lg-mv-78 {
12410− margin-top: 78rem;
12411− margin-bottom: 78rem; }
12412− .lg-mh-78 {
12413− margin-left: 78rem;
12414− margin-right: 78rem; }
12415− .lg-p-78 {
12416− padding: 78rem; }
12417− .lg-pt-78 {
12418− padding-top: 78rem; }
12419− .lg-pb-78 {
12420− padding-bottom: 78rem; }
12421− .lg-pl-78 {
12422− padding-left: 78rem; }
12423− .lg-pr-78 {
12424− padding-right: 78rem; }
12425− .lg-pv-78 {
12426− padding-top: 78rem;
12427− padding-bottom: 78rem; }
12428− .lg-ph-78 {
12429− padding-left: 78rem;
12430− padding-right: 78rem; }
12431− .lg-mt-79 {
12432− margin-top: 79rem; }
12433− .lg-mb-79 {
12434− margin-bottom: 79rem; }
12435− .lg-ml-79 {
12436− margin-left: 79rem; }
12437− .lg-mr-79 {
12438− margin-right: 79rem; }
12439− .lg-mv-79 {
12440− margin-top: 79rem;
12441− margin-bottom: 79rem; }
12442− .lg-mh-79 {
12443− margin-left: 79rem;
12444− margin-right: 79rem; }
12445− .lg-p-79 {
12446− padding: 79rem; }
12447− .lg-pt-79 {
12448− padding-top: 79rem; }
12449− .lg-pb-79 {
12450− padding-bottom: 79rem; }
12451− .lg-pl-79 {
12452− padding-left: 79rem; }
12453− .lg-pr-79 {
12454− padding-right: 79rem; }
12455− .lg-pv-79 {
12456− padding-top: 79rem;
12457− padding-bottom: 79rem; }
12458− .lg-ph-79 {
12459− padding-left: 79rem;
12460− padding-right: 79rem; }
12461− .lg-mt-80 {
12462− margin-top: 80rem; }
12463− .lg-mb-80 {
12464− margin-bottom: 80rem; }
12465− .lg-ml-80 {
12466− margin-left: 80rem; }
12467− .lg-mr-80 {
12468− margin-right: 80rem; }
12469− .lg-mv-80 {
12470− margin-top: 80rem;
12471− margin-bottom: 80rem; }
12472− .lg-mh-80 {
12473− margin-left: 80rem;
12474− margin-right: 80rem; }
12475− .lg-p-80 {
12476− padding: 80rem; }
12477− .lg-pt-80 {
12478− padding-top: 80rem; }
12479− .lg-pb-80 {
12480− padding-bottom: 80rem; }
12481− .lg-pl-80 {
12482− padding-left: 80rem; }
12483− .lg-pr-80 {
12484− padding-right: 80rem; }
12485− .lg-pv-80 {
12486− padding-top: 80rem;
12487− padding-bottom: 80rem; }
12488− .lg-ph-80 {
12489− padding-left: 80rem;
12490− padding-right: 80rem; }
12491− .lg-mt-81 {
12492− margin-top: 81rem; }
12493− .lg-mb-81 {
12494− margin-bottom: 81rem; }
12495− .lg-ml-81 {
12496− margin-left: 81rem; }
12497− .lg-mr-81 {
12498− margin-right: 81rem; }
12499− .lg-mv-81 {
12500− margin-top: 81rem;
12501− margin-bottom: 81rem; }
12502− .lg-mh-81 {
12503− margin-left: 81rem;
12504− margin-right: 81rem; }
12505− .lg-p-81 {
12506− padding: 81rem; }
12507− .lg-pt-81 {
12508− padding-top: 81rem; }
12509− .lg-pb-81 {
12510− padding-bottom: 81rem; }
12511− .lg-pl-81 {
12512− padding-left: 81rem; }
12513− .lg-pr-81 {
12514− padding-right: 81rem; }
12515− .lg-pv-81 {
12516− padding-top: 81rem;
12517− padding-bottom: 81rem; }
12518− .lg-ph-81 {
12519− padding-left: 81rem;
12520− padding-right: 81rem; }
12521− .lg-mt-82 {
12522− margin-top: 82rem; }
12523− .lg-mb-82 {
12524− margin-bottom: 82rem; }
12525− .lg-ml-82 {
12526− margin-left: 82rem; }
12527− .lg-mr-82 {
12528− margin-right: 82rem; }
12529− .lg-mv-82 {
12530− margin-top: 82rem;
12531− margin-bottom: 82rem; }
12532− .lg-mh-82 {
12533− margin-left: 82rem;
12534− margin-right: 82rem; }
12535− .lg-p-82 {
12536− padding: 82rem; }
12537− .lg-pt-82 {
12538− padding-top: 82rem; }
12539− .lg-pb-82 {
12540− padding-bottom: 82rem; }
12541− .lg-pl-82 {
12542− padding-left: 82rem; }
12543− .lg-pr-82 {
12544− padding-right: 82rem; }
12545− .lg-pv-82 {
12546− padding-top: 82rem;
12547− padding-bottom: 82rem; }
12548− .lg-ph-82 {
12549− padding-left: 82rem;
12550− padding-right: 82rem; }
12551− .lg-mt-83 {
12552− margin-top: 83rem; }
12553− .lg-mb-83 {
12554− margin-bottom: 83rem; }
12555− .lg-ml-83 {
12556− margin-left: 83rem; }
12557− .lg-mr-83 {
12558− margin-right: 83rem; }
12559− .lg-mv-83 {
12560− margin-top: 83rem;
12561− margin-bottom: 83rem; }
12562− .lg-mh-83 {
12563− margin-left: 83rem;
12564− margin-right: 83rem; }
12565− .lg-p-83 {
12566− padding: 83rem; }
12567− .lg-pt-83 {
12568− padding-top: 83rem; }
12569− .lg-pb-83 {
12570− padding-bottom: 83rem; }
12571− .lg-pl-83 {
12572− padding-left: 83rem; }
12573− .lg-pr-83 {
12574− padding-right: 83rem; }
12575− .lg-pv-83 {
12576− padding-top: 83rem;
12577− padding-bottom: 83rem; }
12578− .lg-ph-83 {
12579− padding-left: 83rem;
12580− padding-right: 83rem; }
12581− .lg-mt-84 {
12582− margin-top: 84rem; }
12583− .lg-mb-84 {
12584− margin-bottom: 84rem; }
12585− .lg-ml-84 {
12586− margin-left: 84rem; }
12587− .lg-mr-84 {
12588− margin-right: 84rem; }
12589− .lg-mv-84 {
12590− margin-top: 84rem;
12591− margin-bottom: 84rem; }
12592− .lg-mh-84 {
12593− margin-left: 84rem;
12594− margin-right: 84rem; }
12595− .lg-p-84 {
12596− padding: 84rem; }
12597− .lg-pt-84 {
12598− padding-top: 84rem; }
12599− .lg-pb-84 {
12600− padding-bottom: 84rem; }
12601− .lg-pl-84 {
12602− padding-left: 84rem; }
12603− .lg-pr-84 {
12604− padding-right: 84rem; }
12605− .lg-pv-84 {
12606− padding-top: 84rem;
12607− padding-bottom: 84rem; }
12608− .lg-ph-84 {
12609− padding-left: 84rem;
12610− padding-right: 84rem; }
12611− .lg-mt-85 {
12612− margin-top: 85rem; }
12613− .lg-mb-85 {
12614− margin-bottom: 85rem; }
12615− .lg-ml-85 {
12616− margin-left: 85rem; }
12617− .lg-mr-85 {
12618− margin-right: 85rem; }
12619− .lg-mv-85 {
12620− margin-top: 85rem;
12621− margin-bottom: 85rem; }
12622− .lg-mh-85 {
12623− margin-left: 85rem;
12624− margin-right: 85rem; }
12625− .lg-p-85 {
12626− padding: 85rem; }
12627− .lg-pt-85 {
12628− padding-top: 85rem; }
12629− .lg-pb-85 {
12630− padding-bottom: 85rem; }
12631− .lg-pl-85 {
12632− padding-left: 85rem; }
12633− .lg-pr-85 {
12634− padding-right: 85rem; }
12635− .lg-pv-85 {
12636− padding-top: 85rem;
12637− padding-bottom: 85rem; }
12638− .lg-ph-85 {
12639− padding-left: 85rem;
12640− padding-right: 85rem; }
12641− .lg-mt-86 {
12642− margin-top: 86rem; }
12643− .lg-mb-86 {
12644− margin-bottom: 86rem; }
12645− .lg-ml-86 {
12646− margin-left: 86rem; }
12647− .lg-mr-86 {
12648− margin-right: 86rem; }
12649− .lg-mv-86 {
12650− margin-top: 86rem;
12651− margin-bottom: 86rem; }
12652− .lg-mh-86 {
12653− margin-left: 86rem;
12654− margin-right: 86rem; }
12655− .lg-p-86 {
12656− padding: 86rem; }
12657− .lg-pt-86 {
12658− padding-top: 86rem; }
12659− .lg-pb-86 {
12660− padding-bottom: 86rem; }
12661− .lg-pl-86 {
12662− padding-left: 86rem; }
12663− .lg-pr-86 {
12664− padding-right: 86rem; }
12665− .lg-pv-86 {
12666− padding-top: 86rem;
12667− padding-bottom: 86rem; }
12668− .lg-ph-86 {
12669− padding-left: 86rem;
12670− padding-right: 86rem; }
12671− .lg-mt-87 {
12672− margin-top: 87rem; }
12673− .lg-mb-87 {
12674− margin-bottom: 87rem; }
12675− .lg-ml-87 {
12676− margin-left: 87rem; }
12677− .lg-mr-87 {
12678− margin-right: 87rem; }
12679− .lg-mv-87 {
12680− margin-top: 87rem;
12681− margin-bottom: 87rem; }
12682− .lg-mh-87 {
12683− margin-left: 87rem;
12684− margin-right: 87rem; }
12685− .lg-p-87 {
12686− padding: 87rem; }
12687− .lg-pt-87 {
12688− padding-top: 87rem; }
12689− .lg-pb-87 {
12690− padding-bottom: 87rem; }
12691− .lg-pl-87 {
12692− padding-left: 87rem; }
12693− .lg-pr-87 {
12694− padding-right: 87rem; }
12695− .lg-pv-87 {
12696− padding-top: 87rem;
12697− padding-bottom: 87rem; }
12698− .lg-ph-87 {
12699− padding-left: 87rem;
12700− padding-right: 87rem; }
12701− .lg-mt-88 {
12702− margin-top: 88rem; }
12703− .lg-mb-88 {
12704− margin-bottom: 88rem; }
12705− .lg-ml-88 {
12706− margin-left: 88rem; }
12707− .lg-mr-88 {
12708− margin-right: 88rem; }
12709− .lg-mv-88 {
12710− margin-top: 88rem;
12711− margin-bottom: 88rem; }
12712− .lg-mh-88 {
12713− margin-left: 88rem;
12714− margin-right: 88rem; }
12715− .lg-p-88 {
12716− padding: 88rem; }
12717− .lg-pt-88 {
12718− padding-top: 88rem; }
12719− .lg-pb-88 {
12720− padding-bottom: 88rem; }
12721− .lg-pl-88 {
12722− padding-left: 88rem; }
12723− .lg-pr-88 {
12724− padding-right: 88rem; }
12725− .lg-pv-88 {
12726− padding-top: 88rem;
12727− padding-bottom: 88rem; }
12728− .lg-ph-88 {
12729− padding-left: 88rem;
12730− padding-right: 88rem; }
12731− .lg-mt-89 {
12732− margin-top: 89rem; }
12733− .lg-mb-89 {
12734− margin-bottom: 89rem; }
12735− .lg-ml-89 {
12736− margin-left: 89rem; }
12737− .lg-mr-89 {
12738− margin-right: 89rem; }
12739− .lg-mv-89 {
12740− margin-top: 89rem;
12741− margin-bottom: 89rem; }
12742− .lg-mh-89 {
12743− margin-left: 89rem;
12744− margin-right: 89rem; }
12745− .lg-p-89 {
12746− padding: 89rem; }
12747− .lg-pt-89 {
12748− padding-top: 89rem; }
12749− .lg-pb-89 {
12750− padding-bottom: 89rem; }
12751− .lg-pl-89 {
12752− padding-left: 89rem; }
12753− .lg-pr-89 {
12754− padding-right: 89rem; }
12755− .lg-pv-89 {
12756− padding-top: 89rem;
12757− padding-bottom: 89rem; }
12758− .lg-ph-89 {
12759− padding-left: 89rem;
12760− padding-right: 89rem; }
12761− .lg-mt-90 {
12762− margin-top: 90rem; }
12763− .lg-mb-90 {
12764− margin-bottom: 90rem; }
12765− .lg-ml-90 {
12766− margin-left: 90rem; }
12767− .lg-mr-90 {
12768− margin-right: 90rem; }
12769− .lg-mv-90 {
12770− margin-top: 90rem;
12771− margin-bottom: 90rem; }
12772− .lg-mh-90 {
12773− margin-left: 90rem;
12774− margin-right: 90rem; }
12775− .lg-p-90 {
12776− padding: 90rem; }
12777− .lg-pt-90 {
12778− padding-top: 90rem; }
12779− .lg-pb-90 {
12780− padding-bottom: 90rem; }
12781− .lg-pl-90 {
12782− padding-left: 90rem; }
12783− .lg-pr-90 {
12784− padding-right: 90rem; }
12785− .lg-pv-90 {
12786− padding-top: 90rem;
12787− padding-bottom: 90rem; }
12788− .lg-ph-90 {
12789− padding-left: 90rem;
12790− padding-right: 90rem; }
12791− .lg-mt-91 {
12792− margin-top: 91rem; }
12793− .lg-mb-91 {
12794− margin-bottom: 91rem; }
12795− .lg-ml-91 {
12796− margin-left: 91rem; }
12797− .lg-mr-91 {
12798− margin-right: 91rem; }
12799− .lg-mv-91 {
12800− margin-top: 91rem;
12801− margin-bottom: 91rem; }
12802− .lg-mh-91 {
12803− margin-left: 91rem;
12804− margin-right: 91rem; }
12805− .lg-p-91 {
12806− padding: 91rem; }
12807− .lg-pt-91 {
12808− padding-top: 91rem; }
12809− .lg-pb-91 {
12810− padding-bottom: 91rem; }
12811− .lg-pl-91 {
12812− padding-left: 91rem; }
12813− .lg-pr-91 {
12814− padding-right: 91rem; }
12815− .lg-pv-91 {
12816− padding-top: 91rem;
12817− padding-bottom: 91rem; }
12818− .lg-ph-91 {
12819− padding-left: 91rem;
12820− padding-right: 91rem; }
12821− .lg-mt-92 {
12822− margin-top: 92rem; }
12823− .lg-mb-92 {
12824− margin-bottom: 92rem; }
12825− .lg-ml-92 {
12826− margin-left: 92rem; }
12827− .lg-mr-92 {
12828− margin-right: 92rem; }
12829− .lg-mv-92 {
12830− margin-top: 92rem;
12831− margin-bottom: 92rem; }
12832− .lg-mh-92 {
12833− margin-left: 92rem;
12834− margin-right: 92rem; }
12835− .lg-p-92 {
12836− padding: 92rem; }
12837− .lg-pt-92 {
12838− padding-top: 92rem; }
12839− .lg-pb-92 {
12840− padding-bottom: 92rem; }
12841− .lg-pl-92 {
12842− padding-left: 92rem; }
12843− .lg-pr-92 {
12844− padding-right: 92rem; }
12845− .lg-pv-92 {
12846− padding-top: 92rem;
12847− padding-bottom: 92rem; }
12848− .lg-ph-92 {
12849− padding-left: 92rem;
12850− padding-right: 92rem; }
12851− .lg-mt-93 {
12852− margin-top: 93rem; }
12853− .lg-mb-93 {
12854− margin-bottom: 93rem; }
12855− .lg-ml-93 {
12856− margin-left: 93rem; }
12857− .lg-mr-93 {
12858− margin-right: 93rem; }
12859− .lg-mv-93 {
12860− margin-top: 93rem;
12861− margin-bottom: 93rem; }
12862− .lg-mh-93 {
12863− margin-left: 93rem;
12864− margin-right: 93rem; }
12865− .lg-p-93 {
12866− padding: 93rem; }
12867− .lg-pt-93 {
12868− padding-top: 93rem; }
12869− .lg-pb-93 {
12870− padding-bottom: 93rem; }
12871− .lg-pl-93 {
12872− padding-left: 93rem; }
12873− .lg-pr-93 {
12874− padding-right: 93rem; }
12875− .lg-pv-93 {
12876− padding-top: 93rem;
12877− padding-bottom: 93rem; }
12878− .lg-ph-93 {
12879− padding-left: 93rem;
12880− padding-right: 93rem; }
12881− .lg-mt-94 {
12882− margin-top: 94rem; }
12883− .lg-mb-94 {
12884− margin-bottom: 94rem; }
12885− .lg-ml-94 {
12886− margin-left: 94rem; }
12887− .lg-mr-94 {
12888− margin-right: 94rem; }
12889− .lg-mv-94 {
12890− margin-top: 94rem;
12891− margin-bottom: 94rem; }
12892− .lg-mh-94 {
12893− margin-left: 94rem;
12894− margin-right: 94rem; }
12895− .lg-p-94 {
12896− padding: 94rem; }
12897− .lg-pt-94 {
12898− padding-top: 94rem; }
12899− .lg-pb-94 {
12900− padding-bottom: 94rem; }
12901− .lg-pl-94 {
12902− padding-left: 94rem; }
12903− .lg-pr-94 {
12904− padding-right: 94rem; }
12905− .lg-pv-94 {
12906− padding-top: 94rem;
12907− padding-bottom: 94rem; }
12908− .lg-ph-94 {
12909− padding-left: 94rem;
12910− padding-right: 94rem; }
12911− .lg-mt-95 {
12912− margin-top: 95rem; }
12913− .lg-mb-95 {
12914− margin-bottom: 95rem; }
12915− .lg-ml-95 {
12916− margin-left: 95rem; }
12917− .lg-mr-95 {
12918− margin-right: 95rem; }
12919− .lg-mv-95 {
12920− margin-top: 95rem;
12921− margin-bottom: 95rem; }
12922− .lg-mh-95 {
12923− margin-left: 95rem;
12924− margin-right: 95rem; }
12925− .lg-p-95 {
12926− padding: 95rem; }
12927− .lg-pt-95 {
12928− padding-top: 95rem; }
12929− .lg-pb-95 {
12930− padding-bottom: 95rem; }
12931− .lg-pl-95 {
12932− padding-left: 95rem; }
12933− .lg-pr-95 {
12934− padding-right: 95rem; }
12935− .lg-pv-95 {
12936− padding-top: 95rem;
12937− padding-bottom: 95rem; }
12938− .lg-ph-95 {
12939− padding-left: 95rem;
12940− padding-right: 95rem; }
12941− .lg-mt-96 {
12942− margin-top: 96rem; }
12943− .lg-mb-96 {
12944− margin-bottom: 96rem; }
12945− .lg-ml-96 {
12946− margin-left: 96rem; }
12947− .lg-mr-96 {
12948− margin-right: 96rem; }
12949− .lg-mv-96 {
12950− margin-top: 96rem;
12951− margin-bottom: 96rem; }
12952− .lg-mh-96 {
12953− margin-left: 96rem;
12954− margin-right: 96rem; }
12955− .lg-p-96 {
12956− padding: 96rem; }
12957− .lg-pt-96 {
12958− padding-top: 96rem; }
12959− .lg-pb-96 {
12960− padding-bottom: 96rem; }
12961− .lg-pl-96 {
12962− padding-left: 96rem; }
12963− .lg-pr-96 {
12964− padding-right: 96rem; }
12965− .lg-pv-96 {
12966− padding-top: 96rem;
12967− padding-bottom: 96rem; }
12968− .lg-ph-96 {
12969− padding-left: 96rem;
12970− padding-right: 96rem; }
12971− .lg-mt-97 {
12972− margin-top: 97rem; }
12973− .lg-mb-97 {
12974− margin-bottom: 97rem; }
12975− .lg-ml-97 {
12976− margin-left: 97rem; }
12977− .lg-mr-97 {
12978− margin-right: 97rem; }
12979− .lg-mv-97 {
12980− margin-top: 97rem;
12981− margin-bottom: 97rem; }
12982− .lg-mh-97 {
12983− margin-left: 97rem;
12984− margin-right: 97rem; }
12985− .lg-p-97 {
12986− padding: 97rem; }
12987− .lg-pt-97 {
12988− padding-top: 97rem; }
12989− .lg-pb-97 {
12990− padding-bottom: 97rem; }
12991− .lg-pl-97 {
12992− padding-left: 97rem; }
12993− .lg-pr-97 {
12994− padding-right: 97rem; }
12995− .lg-pv-97 {
12996− padding-top: 97rem;
12997− padding-bottom: 97rem; }
12998− .lg-ph-97 {
12999− padding-left: 97rem;
13000− padding-right: 97rem; }
13001− .lg-mt-98 {
13002− margin-top: 98rem; }
13003− .lg-mb-98 {
13004− margin-bottom: 98rem; }
13005− .lg-ml-98 {
13006− margin-left: 98rem; }
13007− .lg-mr-98 {
13008− margin-right: 98rem; }
13009− .lg-mv-98 {
13010− margin-top: 98rem;
13011− margin-bottom: 98rem; }
13012− .lg-mh-98 {
13013− margin-left: 98rem;
13014− margin-right: 98rem; }
13015− .lg-p-98 {
13016− padding: 98rem; }
13017− .lg-pt-98 {
13018− padding-top: 98rem; }
13019− .lg-pb-98 {
13020− padding-bottom: 98rem; }
13021− .lg-pl-98 {
13022− padding-left: 98rem; }
13023− .lg-pr-98 {
13024− padding-right: 98rem; }
13025− .lg-pv-98 {
13026− padding-top: 98rem;
13027− padding-bottom: 98rem; }
13028− .lg-ph-98 {
13029− padding-left: 98rem;
13030− padding-right: 98rem; }
13031− .lg-mt-99 {
13032− margin-top: 99rem; }
13033− .lg-mb-99 {
13034− margin-bottom: 99rem; }
13035− .lg-ml-99 {
13036− margin-left: 99rem; }
13037− .lg-mr-99 {
13038− margin-right: 99rem; }
13039− .lg-mv-99 {
13040− margin-top: 99rem;
13041− margin-bottom: 99rem; }
13042− .lg-mh-99 {
13043− margin-left: 99rem;
13044− margin-right: 99rem; }
13045− .lg-p-99 {
13046− padding: 99rem; }
13047− .lg-pt-99 {
13048− padding-top: 99rem; }
13049− .lg-pb-99 {
13050− padding-bottom: 99rem; }
13051− .lg-pl-99 {
13052− padding-left: 99rem; }
13053− .lg-pr-99 {
13054− padding-right: 99rem; }
13055− .lg-pv-99 {
13056− padding-top: 99rem;
13057− padding-bottom: 99rem; }
13058− .lg-ph-99 {
13059− padding-left: 99rem;
13060− padding-right: 99rem; } }
13061−
13062−* {
13063− box-sizing: border-box; }
13064−
13065−html {
13066− font-size: 4px; }
dist/css/borders.cssdeleted−15
@@ -1,15 +0,0 @@
1−.border-white {
2− border-color: white;
3−}
4−
5−
6−
7−.bl-1{
8− border-left-style: solid;
9− border-left-width: 1rem;
10−}
11−
12−.br-1{
13− border-right-style: solid;
14− border-right-width: 1rem;
15−}
dist/css/colors.cssdeleted−22
@@ -1,22 +0,0 @@
1−.bg-gray-light {
2− background-color: #E6E6E6;
3−}
4−.bg-gray-dark {
5− background-color: #7F7F7F ;
6−}
7−.border-gray-dark{
8− border-color: #7F7F7F;
9−}
10−
11−.gray-dark {
12− color: #7F7F7F ;
13−}
14−
15−.shape-gray-dark {
16− background-color: #7F7F7F;
17− border-color: #7F7F7F;
18−}
19−
20−.bg-blue-light {
21− background-color: #CDD8FF;
22−}
dist/css/flex.cssdeleted−3
@@ -1,3 +0,0 @@
1−.space-between{
2− justify-content: space-between;
3−}
dist/css/images.cssdeleted−4
@@ -1,4 +0,0 @@
1−.post img {
2− width: 100%;
3− margin-bottom: 4rem;
4−}
dist/css/inputs.cssdeleted−10
@@ -1,10 +0,0 @@
1−textarea,
2−input[type="text"],
3−input[type="email"],
4−input[type="number"] {
5− border-width: 2px;
6− border-style: solid;
7− border-color: black;
8− padding: 12px;
9− width: 100%;
10− outline: none; }
dist/css/lists.cssdeleted−12
@@ -1,12 +0,0 @@
1−ol {
2− counter-reset: section;
3− font-feature-settings: "tnum";
4− list-style-type: none;
5−}
6−
7−ol>li::before {
8− counter-increment: section;
9− content: counters(section, ".") " ";
10− font-weight: inherit;
11− display: inline;
12−}
dist/css/menu.cssdeleted−50
@@ -1,50 +0,0 @@
1−.menu-show, .sidebar-show {
2− position: fixed;
3− top:0%;
4− bottom: 0%;
5− width: 100%;
6− z-index: 2;
7− visibility: visible;
8− opacity: 1;
9−}
10−.menu-hide, .sidebar-hide {
11− visibility: hidden;
12− display: none;
13−}
14−
15−.menu-toggle,.sidebar-toggle {
16− cursor: pointer;
17−}
18−
19−/*****************
20−SIDEBAR CUSTOM CSS
21−******************/
22−.dropdown-left {
23− transform: rotate(90deg);
24−}
25−.dropdown-right {
26− transform: rotate(-90deg);
27−}
28−.sidebar-container {
29− max-width: 232px;
30−}
31−
32−.h-100 {
33− height: 100%;
34−}
35−@media only screen and (max-width: 750px) {
36−.sm-hide {
37− display: none;
38− }
39−}
40−
41−@media only screen and (min-width: 750px) {
42−.md-hide {
43− display: none;
44− }
45−}
46−@media only screen and (min-width: 750px) {
47− .h-100-md{
48− height: 100%;
49− }
50−}
dist/css/primer.cssdeleted−3574
@@ -1,3574 +0,0 @@
1−/*SVG Animation*/
2−.animate-false .outer-ring, .inner-ring, .hoon {
3− opacity: 0; }
4−
5−.animate-false svg {
6− opacity: 1;
7− transition: opacity 300ms ease-in; }
8−
9−.animate-true .outer-ring circle {
10− opacity: 0; }
11−
12−.animate-true .outer-ring circle:nth-child(5) {
13− animation: 250ms linear stroke-5 forwards;
14− animation-delay: 500ms; }
15−
16−.animate-true .outer-ring circle:nth-child(4) {
17− animation: 125ms linear stroke-4 forwards;
18− animation-delay: 750ms; }
19−
20−.animate-true .outer-ring circle:nth-child(3) {
21− animation: 125ms linear stroke-3 forwards;
22− animation-delay: 875ms; }
23−
24−.animate-true .outer-ring circle:nth-child(2) {
25− animation: 125ms linear stroke-2 forwards;
26− animation-delay: 1s; }
27−
28−.animate-true .outer-ring circle:nth-child(1) {
29− animation: 500ms ease-out stroke-1 forwards;
30− animation-delay: 1125ms; }
31−
32−.animate-true .hoon {
33− animation: 0.5s scale forwards;
34− opacity: 0; }
35−
36−.animate-true .inner-ring {
37− animation: 0.5s scale forwards;
38− animation-delay: 0.3s;
39− opacity: 0; }
40−
41−@keyframes scale {
42− from {
43− stroke-width: 2; }
44− to {
45− opacity: 1; } }
46−
47−@keyframes stroke-5 {
48− from {
49− stroke-dasharray: 0 276; }
50− to {
51− opacity: 1; } }
52−
53−@keyframes stroke-4 {
54− from {
55− stroke-dashoffset: -45;
56− opacity: 1; }
57− to {
58− opacity: 1; } }
59−
60−@keyframes stroke-3 {
61− from {
62− stroke-dashoffset: -63;
63− opacity: 1; }
64− to {
65− opacity: 1; } }
66−
67−@keyframes stroke-2 {
68− from {
69− stroke-dashoffset: -76;
70− opacity: 1; }
71− to {
72− opacity: 1; } }
73−
74−@keyframes stroke-1 {
75− from {
76− stroke-dashoffset: -89;
77− opacity: 1; }
78− to {
79− opacity: 1; } }
80−
81−.animate-false .hoon-2 {
82− transform: translateY(unset); }
83−
84−.animate-false .arvo-2 {
85− transform: translateY(unset); }
86−
87−.animate-false .text {
88− opacity: 0; }
89−
90−.animate-true .hoon-2 {
91− animation: expand-hoon .4s ease-in-out forwards;
92− animation-delay: 0s; }
93−
94−.animate-true .arvo-2 {
95− animation: expand-arvo .8s ease-in-out forwards;
96− animation-delay: 0s; }
97−
98−.animate-true .nock-label {
99− opacity: 0;
100− animation: fade-in 1s ease-in-out forwards;
101− animation-delay: 300ms; }
102−
103−.animate-true .hoon-label {
104− opacity: 0;
105− animation: fade-in 1s ease-in-out forwards;
106− animation-delay: 400ms; }
107−
108−.animate-true .arvo-label {
109− opacity: 0;
110− animation: fade-in 1s ease-in-out forwards;
111− animation-delay: 500ms; }
112−
113−@keyframes fade-in {
114− from {
115− opacity: 0; }
116− to {
117− opacity: 1; } }
118−
119−@keyframes expand-hoon {
120− from {
121− transform: translateY(unset);
122− -webkit-animation-timing-function: ease-in; }
123− to {
124− transform: translateY(58rem); } }
125−
126−@keyframes expand-arvo {
127− 0% {
128− transform: translateY(unset);
129− -webkit-animation-timing-function: ease-in; }
130− 50% {
131− transform: translateY(58rem);
132− -webkit-animation-timing-function: ease-out; }
133− 100% {
134− transform: translateY(134rem); } }
135−
136−/*Menu Overlay*/
137−.panini {
138− position: fixed;
139− top: 4rem;
140− left: 4rem;
141− z-index: 100; }
142−
143−/* create the menu container*/
144−.panini-icon {
145− width: 24px;
146− height: 24px;
147− position: relative;
148− -webkit-transform: rotate(0deg);
149− -moz-transform: rotate(0deg);
150− -o-transform: rotate(0deg);
151− transform: rotate(0deg);
152− -webkit-transition: .5s ease-in-out;
153− -moz-transition: .5s ease-in-out;
154− -o-transition: .5s ease-in-out;
155− transition: .5s ease-in-out;
156− cursor: pointer; }
157−
158−/* Style the panini
159−must add span in markup to display icon
160− */
161−
162−.menu-overflow {
163− overflow-y: scroll;
164− height: 100%; }
165−
166−.overflow-hidden {
167− overflow: hidden; }
168−
169−.panini-icon {
170− z-index: 3; }
171−
172−.panini-icon span {
173− position: absolute;
174− height: 4px;
175− width: 100%;
176− background-color: #000;
177− opacity: 1;
178− left: 0;
179− -webkit-transform: rotate(0deg);
180− -moz-transform: rotate(0deg);
181− -o-transform: rotate(0deg);
182− transform: rotate(0deg);
183− -webkit-transition: .25s ease-in-out;
184− -moz-transition: .25s ease-in-out;
185− -o-transition: .25s ease-in-out;
186− transition: .25s ease-in-out;
187− transition: background-color .25s ease-out; }
188−
189−/* Animate the panini */
190−.panini-icon span:nth-child(1) {
191− top: 0px;
192− -webkit-transform-origin: left center;
193− -moz-transform-origin: left center;
194− -o-transform-origin: left center;
195− transform-origin: left center; }
196−
197−.panini-icon span:nth-child(2) {
198− top: 12px;
199− -webkit-transform-origin: left center;
200− -moz-transform-origin: left center;
201− -o-transform-origin: left center;
202− transform-origin: left center; }
203−
204−
205−/******/
206−/*Color */
207−.black {
208− color: black; }
209−
210−.white {
211− color: white; }
212−
213−.off-white {
214− color: #f2f2f2; }
215−
216−.green {
217− color: #6FDC74; }
218−
219−/* Background Color */
220−.bg-black {
221− background-color: black; }
222−
223−.bg-gray {
224− background-color: #f1f1f1; }
225−
226−.bg-red {
227− background-color: #EE3124; }
228−
229−.bg-blue {
230− background-color: #4330FC; }
231−
232−.bg-green {
233− background-color: #6FDC74; }
234−
235−/* Border Color */
236−.bb-light-gray {
237− border-bottom: 1px solid #D4D4D4; }
238−
239−/* Utilities */
240−.text-decoration-none {
241− text-decoration: none; }
242−
243−/*Responsive Variables */
244−/*Responsive Spacing */
245−@media only screen and (max-width: 480px) {
246− .sm-m-0 {
247− margin: 0rem; }
248− .sm-mt-0 {
249− margin-top: 0rem; }
250− .sm-mb-0 {
251− margin-bottom: 0rem; }
252− .sm-mr-0 {
253− margin-right: 0rem; }
254− .sm-ml-0 {
255− margin-left: 0rem; }
256− .sm-mx-0 {
257− margin-right: 0rem;
258− margin-left: 0rem; }
259− .sm-my-0 {
260− margin-top: 0rem;
261− margin-bottom: 0rem; }
262− .sm-p-0 {
263− padding: 0rem; }
264− .sm-pt-0 {
265− padding-top: 0rem; }
266− .sm-pb-0 {
267− padding-bottom: 0rem; }
268− .sm-pr-0 {
269− padding-right: 0rem; }
270− .sm-pl-0 {
271− padding-left: 0rem; }
272− .sm-px-0 {
273− padding-right: 0rem;
274− padding-left: 0rem; }
275− .sm-py-0 {
276− padding-top: 0rem;
277− padding-bottom: 0rem; }
278− .sm-m-1 {
279− margin: 1rem; }
280− .sm-mt-1 {
281− margin-top: 1rem; }
282− .sm-mb-1 {
283− margin-bottom: 1rem; }
284− .sm-mr-1 {
285− margin-right: 1rem; }
286− .sm-ml-1 {
287− margin-left: 1rem; }
288− .sm-mx-1 {
289− margin-right: 1rem;
290− margin-left: 1rem; }
291− .sm-my-1 {
292− margin-top: 1rem;
293− margin-bottom: 1rem; }
294− .sm-p-1 {
295− padding: 1rem; }
296− .sm-pt-1 {
297− padding-top: 1rem; }
298− .sm-pb-1 {
299− padding-bottom: 1rem; }
300− .sm-pr-1 {
301− padding-right: 1rem; }
302− .sm-pl-1 {
303− padding-left: 1rem; }
304− .sm-px-1 {
305− padding-right: 1rem;
306− padding-left: 1rem; }
307− .sm-py-1 {
308− padding-top: 1rem;
309− padding-bottom: 1rem; }
310− .sm-m-2 {
311− margin: 2rem; }
312− .sm-mt-2 {
313− margin-top: 2rem; }
314− .sm-mb-2 {
315− margin-bottom: 2rem; }
316− .sm-mr-2 {
317− margin-right: 2rem; }
318− .sm-ml-2 {
319− margin-left: 2rem; }
320− .sm-mx-2 {
321− margin-right: 2rem;
322− margin-left: 2rem; }
323− .sm-my-2 {
324− margin-top: 2rem;
325− margin-bottom: 2rem; }
326− .sm-p-2 {
327− padding: 2rem; }
328− .sm-pt-2 {
329− padding-top: 2rem; }
330− .sm-pb-2 {
331− padding-bottom: 2rem; }
332− .sm-pr-2 {
333− padding-right: 2rem; }
334− .sm-pl-2 {
335− padding-left: 2rem; }
336− .sm-px-2 {
337− padding-right: 2rem;
338− padding-left: 2rem; }
339− .sm-py-2 {
340− padding-top: 2rem;
341− padding-bottom: 2rem; }
342− .sm-m-3 {
343− margin: 3rem; }
344− .sm-mt-3 {
345− margin-top: 3rem; }
346− .sm-mb-3 {
347− margin-bottom: 3rem; }
348− .sm-mr-3 {
349− margin-right: 3rem; }
350− .sm-ml-3 {
351− margin-left: 3rem; }
352− .sm-mx-3 {
353− margin-right: 3rem;
354− margin-left: 3rem; }
355− .sm-my-3 {
356− margin-top: 3rem;
357− margin-bottom: 3rem; }
358− .sm-p-3 {
359− padding: 3rem; }
360− .sm-pt-3 {
361− padding-top: 3rem; }
362− .sm-pb-3 {
363− padding-bottom: 3rem; }
364− .sm-pr-3 {
365− padding-right: 3rem; }
366− .sm-pl-3 {
367− padding-left: 3rem; }
368− .sm-px-3 {
369− padding-right: 3rem;
370− padding-left: 3rem; }
371− .sm-py-3 {
372− padding-top: 3rem;
373− padding-bottom: 3rem; }
374− .sm-m-4 {
375− margin: 4rem; }
376− .sm-mt-4 {
377− margin-top: 4rem; }
378− .sm-mb-4 {
379− margin-bottom: 4rem; }
380− .sm-mr-4 {
381− margin-right: 4rem; }
382− .sm-ml-4 {
383− margin-left: 4rem; }
384− .sm-mx-4 {
385− margin-right: 4rem;
386− margin-left: 4rem; }
387− .sm-my-4 {
388− margin-top: 4rem;
389− margin-bottom: 4rem; }
390− .sm-p-4 {
391− padding: 4rem; }
392− .sm-pt-4 {
393− padding-top: 4rem; }
394− .sm-pb-4 {
395− padding-bottom: 4rem; }
396− .sm-pr-4 {
397− padding-right: 4rem; }
398− .sm-pl-4 {
399− padding-left: 4rem; }
400− .sm-px-4 {
401− padding-right: 4rem;
402− padding-left: 4rem; }
403− .sm-py-4 {
404− padding-top: 4rem;
405− padding-bottom: 4rem; }
406− .sm-m-5 {
407− margin: 5rem; }
408− .sm-mt-5 {
409− margin-top: 5rem; }
410− .sm-mb-5 {
411− margin-bottom: 5rem; }
412− .sm-mr-5 {
413− margin-right: 5rem; }
414− .sm-ml-5 {
415− margin-left: 5rem; }
416− .sm-mx-5 {
417− margin-right: 5rem;
418− margin-left: 5rem; }
419− .sm-my-5 {
420− margin-top: 5rem;
421− margin-bottom: 5rem; }
422− .sm-p-5 {
423− padding: 5rem; }
424− .sm-pt-5 {
425− padding-top: 5rem; }
426− .sm-pb-5 {
427− padding-bottom: 5rem; }
428− .sm-pr-5 {
429− padding-right: 5rem; }
430− .sm-pl-5 {
431− padding-left: 5rem; }
432− .sm-px-5 {
433− padding-right: 5rem;
434− padding-left: 5rem; }
435− .sm-py-5 {
436− padding-top: 5rem;
437− padding-bottom: 5rem; }
438− .sm-m-6 {
439− margin: 6rem; }
440− .sm-mt-6 {
441− margin-top: 6rem; }
442− .sm-mb-6 {
443− margin-bottom: 6rem; }
444− .sm-mr-6 {
445− margin-right: 6rem; }
446− .sm-ml-6 {
447− margin-left: 6rem; }
448− .sm-mx-6 {
449− margin-right: 6rem;
450− margin-left: 6rem; }
451− .sm-my-6 {
452− margin-top: 6rem;
453− margin-bottom: 6rem; }
454− .sm-p-6 {
455− padding: 6rem; }
456− .sm-pt-6 {
457− padding-top: 6rem; }
458− .sm-pb-6 {
459− padding-bottom: 6rem; }
460− .sm-pr-6 {
461− padding-right: 6rem; }
462− .sm-pl-6 {
463− padding-left: 6rem; }
464− .sm-px-6 {
465− padding-right: 6rem;
466− padding-left: 6rem; }
467− .sm-py-6 {
468− padding-top: 6rem;
469− padding-bottom: 6rem; }
470− .sm-m-7 {
471− margin: 7rem; }
472− .sm-mt-7 {
473− margin-top: 7rem; }
474− .sm-mb-7 {
475− margin-bottom: 7rem; }
476− .sm-mr-7 {
477− margin-right: 7rem; }
478− .sm-ml-7 {
479− margin-left: 7rem; }
480− .sm-mx-7 {
481− margin-right: 7rem;
482− margin-left: 7rem; }
483− .sm-my-7 {
484− margin-top: 7rem;
485− margin-bottom: 7rem; }
486− .sm-p-7 {
487− padding: 7rem; }
488− .sm-pt-7 {
489− padding-top: 7rem; }
490− .sm-pb-7 {
491− padding-bottom: 7rem; }
492− .sm-pr-7 {
493− padding-right: 7rem; }
494− .sm-pl-7 {
495− padding-left: 7rem; }
496− .sm-px-7 {
497− padding-right: 7rem;
498− padding-left: 7rem; }
499− .sm-py-7 {
500− padding-top: 7rem;
501− padding-bottom: 7rem; }
502− .sm-m-8 {
503− margin: 8rem; }
504− .sm-mt-8 {
505− margin-top: 8rem; }
506− .sm-mb-8 {
507− margin-bottom: 8rem; }
508− .sm-mr-8 {
509− margin-right: 8rem; }
510− .sm-ml-8 {
511− margin-left: 8rem; }
512− .sm-mx-8 {
513− margin-right: 8rem;
514− margin-left: 8rem; }
515− .sm-my-8 {
516− margin-top: 8rem;
517− margin-bottom: 8rem; }
518− .sm-p-8 {
519− padding: 8rem; }
520− .sm-pt-8 {
521− padding-top: 8rem; }
522− .sm-pb-8 {
523− padding-bottom: 8rem; }
524− .sm-pr-8 {
525− padding-right: 8rem; }
526− .sm-pl-8 {
527− padding-left: 8rem; }
528− .sm-px-8 {
529− padding-right: 8rem;
530− padding-left: 8rem; }
531− .sm-py-8 {
532− padding-top: 8rem;
533− padding-bottom: 8rem; }
534− .sm-m-9 {
535− margin: 9rem; }
536− .sm-mt-9 {
537− margin-top: 9rem; }
538− .sm-mb-9 {
539− margin-bottom: 9rem; }
540− .sm-mr-9 {
541− margin-right: 9rem; }
542− .sm-ml-9 {
543− margin-left: 9rem; }
544− .sm-mx-9 {
545− margin-right: 9rem;
546− margin-left: 9rem; }
547− .sm-my-9 {
548− margin-top: 9rem;
549− margin-bottom: 9rem; }
550− .sm-p-9 {
551− padding: 9rem; }
552− .sm-pt-9 {
553− padding-top: 9rem; }
554− .sm-pb-9 {
555− padding-bottom: 9rem; }
556− .sm-pr-9 {
557− padding-right: 9rem; }
558− .sm-pl-9 {
559− padding-left: 9rem; }
560− .sm-px-9 {
561− padding-right: 9rem;
562− padding-left: 9rem; }
563− .sm-py-9 {
564− padding-top: 9rem;
565− padding-bottom: 9rem; }
566− .sm-m-10 {
567− margin: 10rem; }
568− .sm-mt-10 {
569− margin-top: 10rem; }
570− .sm-mb-10 {
571− margin-bottom: 10rem; }
572− .sm-mr-10 {
573− margin-right: 10rem; }
574− .sm-ml-10 {
575− margin-left: 10rem; }
576− .sm-mx-10 {
577− margin-right: 10rem;
578− margin-left: 10rem; }
579− .sm-my-10 {
580− margin-top: 10rem;
581− margin-bottom: 10rem; }
582− .sm-p-10 {
583− padding: 10rem; }
584− .sm-pt-10 {
585− padding-top: 10rem; }
586− .sm-pb-10 {
587− padding-bottom: 10rem; }
588− .sm-pr-10 {
589− padding-right: 10rem; }
590− .sm-pl-10 {
591− padding-left: 10rem; }
592− .sm-px-10 {
593− padding-right: 10rem;
594− padding-left: 10rem; }
595− .sm-py-10 {
596− padding-top: 10rem;
597− padding-bottom: 10rem; }
598− .sm-m-11 {
599− margin: 11rem; }
600− .sm-mt-11 {
601− margin-top: 11rem; }
602− .sm-mb-11 {
603− margin-bottom: 11rem; }
604− .sm-mr-11 {
605− margin-right: 11rem; }
606− .sm-ml-11 {
607− margin-left: 11rem; }
608− .sm-mx-11 {
609− margin-right: 11rem;
610− margin-left: 11rem; }
611− .sm-my-11 {
612− margin-top: 11rem;
613− margin-bottom: 11rem; }
614− .sm-p-11 {
615− padding: 11rem; }
616− .sm-pt-11 {
617− padding-top: 11rem; }
618− .sm-pb-11 {
619− padding-bottom: 11rem; }
620− .sm-pr-11 {
621− padding-right: 11rem; }
622− .sm-pl-11 {
623− padding-left: 11rem; }
624− .sm-px-11 {
625− padding-right: 11rem;
626− padding-left: 11rem; }
627− .sm-py-11 {
628− padding-top: 11rem;
629− padding-bottom: 11rem; }
630− .sm-m-12 {
631− margin: 12rem; }
632− .sm-mt-12 {
633− margin-top: 12rem; }
634− .sm-mb-12 {
635− margin-bottom: 12rem; }
636− .sm-mr-12 {
637− margin-right: 12rem; }
638− .sm-ml-12 {
639− margin-left: 12rem; }
640− .sm-mx-12 {
641− margin-right: 12rem;
642− margin-left: 12rem; }
643− .sm-my-12 {
644− margin-top: 12rem;
645− margin-bottom: 12rem; }
646− .sm-p-12 {
647− padding: 12rem; }
648− .sm-pt-12 {
649− padding-top: 12rem; }
650− .sm-pb-12 {
651− padding-bottom: 12rem; }
652− .sm-pr-12 {
653− padding-right: 12rem; }
654− .sm-pl-12 {
655− padding-left: 12rem; }
656− .sm-px-12 {
657− padding-right: 12rem;
658− padding-left: 12rem; }
659− .sm-py-12 {
660− padding-top: 12rem;
661− padding-bottom: 12rem; }
662− .sm-m-13 {
663− margin: 13rem; }
664− .sm-mt-13 {
665− margin-top: 13rem; }
666− .sm-mb-13 {
667− margin-bottom: 13rem; }
668− .sm-mr-13 {
669− margin-right: 13rem; }
670− .sm-ml-13 {
671− margin-left: 13rem; }
672− .sm-mx-13 {
673− margin-right: 13rem;
674− margin-left: 13rem; }
675− .sm-my-13 {
676− margin-top: 13rem;
677− margin-bottom: 13rem; }
678− .sm-p-13 {
679− padding: 13rem; }
680− .sm-pt-13 {
681− padding-top: 13rem; }
682− .sm-pb-13 {
683− padding-bottom: 13rem; }
684− .sm-pr-13 {
685− padding-right: 13rem; }
686− .sm-pl-13 {
687− padding-left: 13rem; }
688− .sm-px-13 {
689− padding-right: 13rem;
690− padding-left: 13rem; }
691− .sm-py-13 {
692− padding-top: 13rem;
693− padding-bottom: 13rem; }
694− .sm-m-14 {
695− margin: 14rem; }
696− .sm-mt-14 {
697− margin-top: 14rem; }
698− .sm-mb-14 {
699− margin-bottom: 14rem; }
700− .sm-mr-14 {
701− margin-right: 14rem; }
702− .sm-ml-14 {
703− margin-left: 14rem; }
704− .sm-mx-14 {
705− margin-right: 14rem;
706− margin-left: 14rem; }
707− .sm-my-14 {
708− margin-top: 14rem;
709− margin-bottom: 14rem; }
710− .sm-p-14 {
711− padding: 14rem; }
712− .sm-pt-14 {
713− padding-top: 14rem; }
714− .sm-pb-14 {
715− padding-bottom: 14rem; }
716− .sm-pr-14 {
717− padding-right: 14rem; }
718− .sm-pl-14 {
719− padding-left: 14rem; }
720− .sm-px-14 {
721− padding-right: 14rem;
722− padding-left: 14rem; }
723− .sm-py-14 {
724− padding-top: 14rem;
725− padding-bottom: 14rem; }
726− .sm-m-15 {
727− margin: 15rem; }
728− .sm-mt-15 {
729− margin-top: 15rem; }
730− .sm-mb-15 {
731− margin-bottom: 15rem; }
732− .sm-mr-15 {
733− margin-right: 15rem; }
734− .sm-ml-15 {
735− margin-left: 15rem; }
736− .sm-mx-15 {
737− margin-right: 15rem;
738− margin-left: 15rem; }
739− .sm-my-15 {
740− margin-top: 15rem;
741− margin-bottom: 15rem; }
742− .sm-p-15 {
743− padding: 15rem; }
744− .sm-pt-15 {
745− padding-top: 15rem; }
746− .sm-pb-15 {
747− padding-bottom: 15rem; }
748− .sm-pr-15 {
749− padding-right: 15rem; }
750− .sm-pl-15 {
751− padding-left: 15rem; }
752− .sm-px-15 {
753− padding-right: 15rem;
754− padding-left: 15rem; }
755− .sm-py-15 {
756− padding-top: 15rem;
757− padding-bottom: 15rem; }
758− .sm-m-16 {
759− margin: 16rem; }
760− .sm-mt-16 {
761− margin-top: 16rem; }
762− .sm-mb-16 {
763− margin-bottom: 16rem; }
764− .sm-mr-16 {
765− margin-right: 16rem; }
766− .sm-ml-16 {
767− margin-left: 16rem; }
768− .sm-mx-16 {
769− margin-right: 16rem;
770− margin-left: 16rem; }
771− .sm-my-16 {
772− margin-top: 16rem;
773− margin-bottom: 16rem; }
774− .sm-p-16 {
775− padding: 16rem; }
776− .sm-pt-16 {
777− padding-top: 16rem; }
778− .sm-pb-16 {
779− padding-bottom: 16rem; }
780− .sm-pr-16 {
781− padding-right: 16rem; }
782− .sm-pl-16 {
783− padding-left: 16rem; }
784− .sm-px-16 {
785− padding-right: 16rem;
786− padding-left: 16rem; }
787− .sm-py-16 {
788− padding-top: 16rem;
789− padding-bottom: 16rem; }
790− .sm-m-17 {
791− margin: 17rem; }
792− .sm-mt-17 {
793− margin-top: 17rem; }
794− .sm-mb-17 {
795− margin-bottom: 17rem; }
796− .sm-mr-17 {
797− margin-right: 17rem; }
798− .sm-ml-17 {
799− margin-left: 17rem; }
800− .sm-mx-17 {
801− margin-right: 17rem;
802− margin-left: 17rem; }
803− .sm-my-17 {
804− margin-top: 17rem;
805− margin-bottom: 17rem; }
806− .sm-p-17 {
807− padding: 17rem; }
808− .sm-pt-17 {
809− padding-top: 17rem; }
810− .sm-pb-17 {
811− padding-bottom: 17rem; }
812− .sm-pr-17 {
813− padding-right: 17rem; }
814− .sm-pl-17 {
815− padding-left: 17rem; }
816− .sm-px-17 {
817− padding-right: 17rem;
818− padding-left: 17rem; }
819− .sm-py-17 {
820− padding-top: 17rem;
821− padding-bottom: 17rem; }
822− .sm-m-18 {
823− margin: 18rem; }
824− .sm-mt-18 {
825− margin-top: 18rem; }
826− .sm-mb-18 {
827− margin-bottom: 18rem; }
828− .sm-mr-18 {
829− margin-right: 18rem; }
830− .sm-ml-18 {
831− margin-left: 18rem; }
832− .sm-mx-18 {
833− margin-right: 18rem;
834− margin-left: 18rem; }
835− .sm-my-18 {
836− margin-top: 18rem;
837− margin-bottom: 18rem; }
838− .sm-p-18 {
839− padding: 18rem; }
840− .sm-pt-18 {
841− padding-top: 18rem; }
842− .sm-pb-18 {
843− padding-bottom: 18rem; }
844− .sm-pr-18 {
845− padding-right: 18rem; }
846− .sm-pl-18 {
847− padding-left: 18rem; }
848− .sm-px-18 {
849− padding-right: 18rem;
850− padding-left: 18rem; }
851− .sm-py-18 {
852− padding-top: 18rem;
853− padding-bottom: 18rem; }
854− .sm-m-19 {
855− margin: 19rem; }
856− .sm-mt-19 {
857− margin-top: 19rem; }
858− .sm-mb-19 {
859− margin-bottom: 19rem; }
860− .sm-mr-19 {
861− margin-right: 19rem; }
862− .sm-ml-19 {
863− margin-left: 19rem; }
864− .sm-mx-19 {
865− margin-right: 19rem;
866− margin-left: 19rem; }
867− .sm-my-19 {
868− margin-top: 19rem;
869− margin-bottom: 19rem; }
870− .sm-p-19 {
871− padding: 19rem; }
872− .sm-pt-19 {
873− padding-top: 19rem; }
874− .sm-pb-19 {
875− padding-bottom: 19rem; }
876− .sm-pr-19 {
877− padding-right: 19rem; }
878− .sm-pl-19 {
879− padding-left: 19rem; }
880− .sm-px-19 {
881− padding-right: 19rem;
882− padding-left: 19rem; }
883− .sm-py-19 {
884− padding-top: 19rem;
885− padding-bottom: 19rem; }
886− .sm-m-20 {
887− margin: 20rem; }
888− .sm-mt-20 {
889− margin-top: 20rem; }
890− .sm-mb-20 {
891− margin-bottom: 20rem; }
892− .sm-mr-20 {
893− margin-right: 20rem; }
894− .sm-ml-20 {
895− margin-left: 20rem; }
896− .sm-mx-20 {
897− margin-right: 20rem;
898− margin-left: 20rem; }
899− .sm-my-20 {
900− margin-top: 20rem;
901− margin-bottom: 20rem; }
902− .sm-p-20 {
903− padding: 20rem; }
904− .sm-pt-20 {
905− padding-top: 20rem; }
906− .sm-pb-20 {
907− padding-bottom: 20rem; }
908− .sm-pr-20 {
909− padding-right: 20rem; }
910− .sm-pl-20 {
911− padding-left: 20rem; }
912− .sm-px-20 {
913− padding-right: 20rem;
914− padding-left: 20rem; }
915− .sm-py-20 {
916− padding-top: 20rem;
917− padding-bottom: 20rem; }
918− .sm-m-21 {
919− margin: 21rem; }
920− .sm-mt-21 {
921− margin-top: 21rem; }
922− .sm-mb-21 {
923− margin-bottom: 21rem; }
924− .sm-mr-21 {
925− margin-right: 21rem; }
926− .sm-ml-21 {
927− margin-left: 21rem; }
928− .sm-mx-21 {
929− margin-right: 21rem;
930− margin-left: 21rem; }
931− .sm-my-21 {
932− margin-top: 21rem;
933− margin-bottom: 21rem; }
934− .sm-p-21 {
935− padding: 21rem; }
936− .sm-pt-21 {
937− padding-top: 21rem; }
938− .sm-pb-21 {
939− padding-bottom: 21rem; }
940− .sm-pr-21 {
941− padding-right: 21rem; }
942− .sm-pl-21 {
943− padding-left: 21rem; }
944− .sm-px-21 {
945− padding-right: 21rem;
946− padding-left: 21rem; }
947− .sm-py-21 {
948− padding-top: 21rem;
949− padding-bottom: 21rem; }
950− .sm-m-22 {
951− margin: 22rem; }
952− .sm-mt-22 {
953− margin-top: 22rem; }
954− .sm-mb-22 {
955− margin-bottom: 22rem; }
956− .sm-mr-22 {
957− margin-right: 22rem; }
958− .sm-ml-22 {
959− margin-left: 22rem; }
960− .sm-mx-22 {
961− margin-right: 22rem;
962− margin-left: 22rem; }
963− .sm-my-22 {
964− margin-top: 22rem;
965− margin-bottom: 22rem; }
966− .sm-p-22 {
967− padding: 22rem; }
968− .sm-pt-22 {
969− padding-top: 22rem; }
970− .sm-pb-22 {
971− padding-bottom: 22rem; }
972− .sm-pr-22 {
973− padding-right: 22rem; }
974− .sm-pl-22 {
975− padding-left: 22rem; }
976− .sm-px-22 {
977− padding-right: 22rem;
978− padding-left: 22rem; }
979− .sm-py-22 {
980− padding-top: 22rem;
981− padding-bottom: 22rem; }
982− .sm-m-23 {
983− margin: 23rem; }
984− .sm-mt-23 {
985− margin-top: 23rem; }
986− .sm-mb-23 {
987− margin-bottom: 23rem; }
988− .sm-mr-23 {
989− margin-right: 23rem; }
990− .sm-ml-23 {
991− margin-left: 23rem; }
992− .sm-mx-23 {
993− margin-right: 23rem;
994− margin-left: 23rem; }
995− .sm-my-23 {
996− margin-top: 23rem;
997− margin-bottom: 23rem; }
998− .sm-p-23 {
999− padding: 23rem; }
1000− .sm-pt-23 {
1001− padding-top: 23rem; }
1002− .sm-pb-23 {
1003− padding-bottom: 23rem; }
1004− .sm-pr-23 {
1005− padding-right: 23rem; }
1006− .sm-pl-23 {
1007− padding-left: 23rem; }
1008− .sm-px-23 {
1009− padding-right: 23rem;
1010− padding-left: 23rem; }
1011− .sm-py-23 {
1012− padding-top: 23rem;
1013− padding-bottom: 23rem; }
1014− .sm-m-24 {
1015− margin: 24rem; }
1016− .sm-mt-24 {
1017− margin-top: 24rem; }
1018− .sm-mb-24 {
1019− margin-bottom: 24rem; }
1020− .sm-mr-24 {
1021− margin-right: 24rem; }
1022− .sm-ml-24 {
1023− margin-left: 24rem; }
1024− .sm-mx-24 {
1025− margin-right: 24rem;
1026− margin-left: 24rem; }
1027− .sm-my-24 {
1028− margin-top: 24rem;
1029− margin-bottom: 24rem; }
1030− .sm-p-24 {
1031− padding: 24rem; }
1032− .sm-pt-24 {
1033− padding-top: 24rem; }
1034− .sm-pb-24 {
1035− padding-bottom: 24rem; }
1036− .sm-pr-24 {
1037− padding-right: 24rem; }
1038− .sm-pl-24 {
1039− padding-left: 24rem; }
1040− .sm-px-24 {
1041− padding-right: 24rem;
1042− padding-left: 24rem; }
1043− .sm-py-24 {
1044− padding-top: 24rem;
1045− padding-bottom: 24rem; }
1046− .sm-m-25 {
1047− margin: 25rem; }
1048− .sm-mt-25 {
1049− margin-top: 25rem; }
1050− .sm-mb-25 {
1051− margin-bottom: 25rem; }
1052− .sm-mr-25 {
1053− margin-right: 25rem; }
1054− .sm-ml-25 {
1055− margin-left: 25rem; }
1056− .sm-mx-25 {
1057− margin-right: 25rem;
1058− margin-left: 25rem; }
1059− .sm-my-25 {
1060− margin-top: 25rem;
1061− margin-bottom: 25rem; }
1062− .sm-p-25 {
1063− padding: 25rem; }
1064− .sm-pt-25 {
1065− padding-top: 25rem; }
1066− .sm-pb-25 {
1067− padding-bottom: 25rem; }
1068− .sm-pr-25 {
1069− padding-right: 25rem; }
1070− .sm-pl-25 {
1071− padding-left: 25rem; }
1072− .sm-px-25 {
1073− padding-right: 25rem;
1074− padding-left: 25rem; }
1075− .sm-py-25 {
1076− padding-top: 25rem;
1077− padding-bottom: 25rem; }
1078− .sm-m-26 {
1079− margin: 26rem; }
1080− .sm-mt-26 {
1081− margin-top: 26rem; }
1082− .sm-mb-26 {
1083− margin-bottom: 26rem; }
1084− .sm-mr-26 {
1085− margin-right: 26rem; }
1086− .sm-ml-26 {
1087− margin-left: 26rem; }
1088− .sm-mx-26 {
1089− margin-right: 26rem;
1090− margin-left: 26rem; }
1091− .sm-my-26 {
1092− margin-top: 26rem;
1093− margin-bottom: 26rem; }
1094− .sm-p-26 {
1095− padding: 26rem; }
1096− .sm-pt-26 {
1097− padding-top: 26rem; }
1098− .sm-pb-26 {
1099− padding-bottom: 26rem; }
1100− .sm-pr-26 {
1101− padding-right: 26rem; }
1102− .sm-pl-26 {
1103− padding-left: 26rem; }
1104− .sm-px-26 {
1105− padding-right: 26rem;
1106− padding-left: 26rem; }
1107− .sm-py-26 {
1108− padding-top: 26rem;
1109− padding-bottom: 26rem; }
1110− .sm-m-27 {
1111− margin: 27rem; }
1112− .sm-mt-27 {
1113− margin-top: 27rem; }
1114− .sm-mb-27 {
1115− margin-bottom: 27rem; }
1116− .sm-mr-27 {
1117− margin-right: 27rem; }
1118− .sm-ml-27 {
1119− margin-left: 27rem; }
1120− .sm-mx-27 {
1121− margin-right: 27rem;
1122− margin-left: 27rem; }
1123− .sm-my-27 {
1124− margin-top: 27rem;
1125− margin-bottom: 27rem; }
1126− .sm-p-27 {
1127− padding: 27rem; }
1128− .sm-pt-27 {
1129− padding-top: 27rem; }
1130− .sm-pb-27 {
1131− padding-bottom: 27rem; }
1132− .sm-pr-27 {
1133− padding-right: 27rem; }
1134− .sm-pl-27 {
1135− padding-left: 27rem; }
1136− .sm-px-27 {
1137− padding-right: 27rem;
1138− padding-left: 27rem; }
1139− .sm-py-27 {
1140− padding-top: 27rem;
1141− padding-bottom: 27rem; }
1142− .sm-m-28 {
1143− margin: 28rem; }
1144− .sm-mt-28 {
1145− margin-top: 28rem; }
1146− .sm-mb-28 {
1147− margin-bottom: 28rem; }
1148− .sm-mr-28 {
1149− margin-right: 28rem; }
1150− .sm-ml-28 {
1151− margin-left: 28rem; }
1152− .sm-mx-28 {
1153− margin-right: 28rem;
1154− margin-left: 28rem; }
1155− .sm-my-28 {
1156− margin-top: 28rem;
1157− margin-bottom: 28rem; }
1158− .sm-p-28 {
1159− padding: 28rem; }
1160− .sm-pt-28 {
1161− padding-top: 28rem; }
1162− .sm-pb-28 {
1163− padding-bottom: 28rem; }
1164− .sm-pr-28 {
1165− padding-right: 28rem; }
1166− .sm-pl-28 {
1167− padding-left: 28rem; }
1168− .sm-px-28 {
1169− padding-right: 28rem;
1170− padding-left: 28rem; }
1171− .sm-py-28 {
1172− padding-top: 28rem;
1173− padding-bottom: 28rem; }
1174− .sm-m-29 {
1175− margin: 29rem; }
1176− .sm-mt-29 {
1177− margin-top: 29rem; }
1178− .sm-mb-29 {
1179− margin-bottom: 29rem; }
1180− .sm-mr-29 {
1181− margin-right: 29rem; }
1182− .sm-ml-29 {
1183− margin-left: 29rem; }
1184− .sm-mx-29 {
1185− margin-right: 29rem;
1186− margin-left: 29rem; }
1187− .sm-my-29 {
1188− margin-top: 29rem;
1189− margin-bottom: 29rem; }
1190− .sm-p-29 {
1191− padding: 29rem; }
1192− .sm-pt-29 {
1193− padding-top: 29rem; }
1194− .sm-pb-29 {
1195− padding-bottom: 29rem; }
1196− .sm-pr-29 {
1197− padding-right: 29rem; }
1198− .sm-pl-29 {
1199− padding-left: 29rem; }
1200− .sm-px-29 {
1201− padding-right: 29rem;
1202− padding-left: 29rem; }
1203− .sm-py-29 {
1204− padding-top: 29rem;
1205− padding-bottom: 29rem; }
1206− .sm-m-30 {
1207− margin: 30rem; }
1208− .sm-mt-30 {
1209− margin-top: 30rem; }
1210− .sm-mb-30 {
1211− margin-bottom: 30rem; }
1212− .sm-mr-30 {
1213− margin-right: 30rem; }
1214− .sm-ml-30 {
1215− margin-left: 30rem; }
1216− .sm-mx-30 {
1217− margin-right: 30rem;
1218− margin-left: 30rem; }
1219− .sm-my-30 {
1220− margin-top: 30rem;
1221− margin-bottom: 30rem; }
1222− .sm-p-30 {
1223− padding: 30rem; }
1224− .sm-pt-30 {
1225− padding-top: 30rem; }
1226− .sm-pb-30 {
1227− padding-bottom: 30rem; }
1228− .sm-pr-30 {
1229− padding-right: 30rem; }
1230− .sm-pl-30 {
1231− padding-left: 30rem; }
1232− .sm-px-30 {
1233− padding-right: 30rem;
1234− padding-left: 30rem; }
1235− .sm-py-30 {
1236− padding-top: 30rem;
1237− padding-bottom: 30rem; }
1238− .sm-m-31 {
1239− margin: 31rem; }
1240− .sm-mt-31 {
1241− margin-top: 31rem; }
1242− .sm-mb-31 {
1243− margin-bottom: 31rem; }
1244− .sm-mr-31 {
1245− margin-right: 31rem; }
1246− .sm-ml-31 {
1247− margin-left: 31rem; }
1248− .sm-mx-31 {
1249− margin-right: 31rem;
1250− margin-left: 31rem; }
1251− .sm-my-31 {
1252− margin-top: 31rem;
1253− margin-bottom: 31rem; }
1254− .sm-p-31 {
1255− padding: 31rem; }
1256− .sm-pt-31 {
1257− padding-top: 31rem; }
1258− .sm-pb-31 {
1259− padding-bottom: 31rem; }
1260− .sm-pr-31 {
1261− padding-right: 31rem; }
1262− .sm-pl-31 {
1263− padding-left: 31rem; }
1264− .sm-px-31 {
1265− padding-right: 31rem;
1266− padding-left: 31rem; }
1267− .sm-py-31 {
1268− padding-top: 31rem;
1269− padding-bottom: 31rem; }
1270− .sm-m-32 {
1271− margin: 32rem; }
1272− .sm-mt-32 {
1273− margin-top: 32rem; }
1274− .sm-mb-32 {
1275− margin-bottom: 32rem; }
1276− .sm-mr-32 {
1277− margin-right: 32rem; }
1278− .sm-ml-32 {
1279− margin-left: 32rem; }
1280− .sm-mx-32 {
1281− margin-right: 32rem;
1282− margin-left: 32rem; }
1283− .sm-my-32 {
1284− margin-top: 32rem;
1285− margin-bottom: 32rem; }
1286− .sm-p-32 {
1287− padding: 32rem; }
1288− .sm-pt-32 {
1289− padding-top: 32rem; }
1290− .sm-pb-32 {
1291− padding-bottom: 32rem; }
1292− .sm-pr-32 {
1293− padding-right: 32rem; }
1294− .sm-pl-32 {
1295− padding-left: 32rem; }
1296− .sm-px-32 {
1297− padding-right: 32rem;
1298− padding-left: 32rem; }
1299− .sm-py-32 {
1300− padding-top: 32rem;
1301− padding-bottom: 32rem; }
1302− .sm-m-33 {
1303− margin: 33rem; }
1304− .sm-mt-33 {
1305− margin-top: 33rem; }
1306− .sm-mb-33 {
1307− margin-bottom: 33rem; }
1308− .sm-mr-33 {
1309− margin-right: 33rem; }
1310− .sm-ml-33 {
1311− margin-left: 33rem; }
1312− .sm-mx-33 {
1313− margin-right: 33rem;
1314− margin-left: 33rem; }
1315− .sm-my-33 {
1316− margin-top: 33rem;
1317− margin-bottom: 33rem; }
1318− .sm-p-33 {
1319− padding: 33rem; }
1320− .sm-pt-33 {
1321− padding-top: 33rem; }
1322− .sm-pb-33 {
1323− padding-bottom: 33rem; }
1324− .sm-pr-33 {
1325− padding-right: 33rem; }
1326− .sm-pl-33 {
1327− padding-left: 33rem; }
1328− .sm-px-33 {
1329− padding-right: 33rem;
1330− padding-left: 33rem; }
1331− .sm-py-33 {
1332− padding-top: 33rem;
1333− padding-bottom: 33rem; }
1334− .sm-m-34 {
1335− margin: 34rem; }
1336− .sm-mt-34 {
1337− margin-top: 34rem; }
1338− .sm-mb-34 {
1339− margin-bottom: 34rem; }
1340− .sm-mr-34 {
1341− margin-right: 34rem; }
1342− .sm-ml-34 {
1343− margin-left: 34rem; }
1344− .sm-mx-34 {
1345− margin-right: 34rem;
1346− margin-left: 34rem; }
1347− .sm-my-34 {
1348− margin-top: 34rem;
1349− margin-bottom: 34rem; }
1350− .sm-p-34 {
1351− padding: 34rem; }
1352− .sm-pt-34 {
1353− padding-top: 34rem; }
1354− .sm-pb-34 {
1355− padding-bottom: 34rem; }
1356− .sm-pr-34 {
1357− padding-right: 34rem; }
1358− .sm-pl-34 {
1359− padding-left: 34rem; }
1360− .sm-px-34 {
1361− padding-right: 34rem;
1362− padding-left: 34rem; }
1363− .sm-py-34 {
1364− padding-top: 34rem;
1365− padding-bottom: 34rem; }
1366− .sm-m-35 {
1367− margin: 35rem; }
1368− .sm-mt-35 {
1369− margin-top: 35rem; }
1370− .sm-mb-35 {
1371− margin-bottom: 35rem; }
1372− .sm-mr-35 {
1373− margin-right: 35rem; }
1374− .sm-ml-35 {
1375− margin-left: 35rem; }
1376− .sm-mx-35 {
1377− margin-right: 35rem;
1378− margin-left: 35rem; }
1379− .sm-my-35 {
1380− margin-top: 35rem;
1381− margin-bottom: 35rem; }
1382− .sm-p-35 {
1383− padding: 35rem; }
1384− .sm-pt-35 {
1385− padding-top: 35rem; }
1386− .sm-pb-35 {
1387− padding-bottom: 35rem; }
1388− .sm-pr-35 {
1389− padding-right: 35rem; }
1390− .sm-pl-35 {
1391− padding-left: 35rem; }
1392− .sm-px-35 {
1393− padding-right: 35rem;
1394− padding-left: 35rem; }
1395− .sm-py-35 {
1396− padding-top: 35rem;
1397− padding-bottom: 35rem; }
1398− .sm-m-36 {
1399− margin: 36rem; }
1400− .sm-mt-36 {
1401− margin-top: 36rem; }
1402− .sm-mb-36 {
1403− margin-bottom: 36rem; }
1404− .sm-mr-36 {
1405− margin-right: 36rem; }
1406− .sm-ml-36 {
1407− margin-left: 36rem; }
1408− .sm-mx-36 {
1409− margin-right: 36rem;
1410− margin-left: 36rem; }
1411− .sm-my-36 {
1412− margin-top: 36rem;
1413− margin-bottom: 36rem; }
1414− .sm-p-36 {
1415− padding: 36rem; }
1416− .sm-pt-36 {
1417− padding-top: 36rem; }
1418− .sm-pb-36 {
1419− padding-bottom: 36rem; }
1420− .sm-pr-36 {
1421− padding-right: 36rem; }
1422− .sm-pl-36 {
1423− padding-left: 36rem; }
1424− .sm-px-36 {
1425− padding-right: 36rem;
1426− padding-left: 36rem; }
1427− .sm-py-36 {
1428− padding-top: 36rem;
1429− padding-bottom: 36rem; }
1430− .sm-m-37 {
1431− margin: 37rem; }
1432− .sm-mt-37 {
1433− margin-top: 37rem; }
1434− .sm-mb-37 {
1435− margin-bottom: 37rem; }
1436− .sm-mr-37 {
1437− margin-right: 37rem; }
1438− .sm-ml-37 {
1439− margin-left: 37rem; }
1440− .sm-mx-37 {
1441− margin-right: 37rem;
1442− margin-left: 37rem; }
1443− .sm-my-37 {
1444− margin-top: 37rem;
1445− margin-bottom: 37rem; }
1446− .sm-p-37 {
1447− padding: 37rem; }
1448− .sm-pt-37 {
1449− padding-top: 37rem; }
1450− .sm-pb-37 {
1451− padding-bottom: 37rem; }
1452− .sm-pr-37 {
1453− padding-right: 37rem; }
1454− .sm-pl-37 {
1455− padding-left: 37rem; }
1456− .sm-px-37 {
1457− padding-right: 37rem;
1458− padding-left: 37rem; }
1459− .sm-py-37 {
1460− padding-top: 37rem;
1461− padding-bottom: 37rem; }
1462− .sm-m-38 {
1463− margin: 38rem; }
1464− .sm-mt-38 {
1465− margin-top: 38rem; }
1466− .sm-mb-38 {
1467− margin-bottom: 38rem; }
1468− .sm-mr-38 {
1469− margin-right: 38rem; }
1470− .sm-ml-38 {
1471− margin-left: 38rem; }
1472− .sm-mx-38 {
1473− margin-right: 38rem;
1474− margin-left: 38rem; }
1475− .sm-my-38 {
1476− margin-top: 38rem;
1477− margin-bottom: 38rem; }
1478− .sm-p-38 {
1479− padding: 38rem; }
1480− .sm-pt-38 {
1481− padding-top: 38rem; }
1482− .sm-pb-38 {
1483− padding-bottom: 38rem; }
1484− .sm-pr-38 {
1485− padding-right: 38rem; }
1486− .sm-pl-38 {
1487− padding-left: 38rem; }
1488− .sm-px-38 {
1489− padding-right: 38rem;
1490− padding-left: 38rem; }
1491− .sm-py-38 {
1492− padding-top: 38rem;
1493− padding-bottom: 38rem; }
1494− .sm-m-39 {
1495− margin: 39rem; }
1496− .sm-mt-39 {
1497− margin-top: 39rem; }
1498− .sm-mb-39 {
1499− margin-bottom: 39rem; }
1500− .sm-mr-39 {
1501− margin-right: 39rem; }
1502− .sm-ml-39 {
1503− margin-left: 39rem; }
1504− .sm-mx-39 {
1505− margin-right: 39rem;
1506− margin-left: 39rem; }
1507− .sm-my-39 {
1508− margin-top: 39rem;
1509− margin-bottom: 39rem; }
1510− .sm-p-39 {
1511− padding: 39rem; }
1512− .sm-pt-39 {
1513− padding-top: 39rem; }
1514− .sm-pb-39 {
1515− padding-bottom: 39rem; }
1516− .sm-pr-39 {
1517− padding-right: 39rem; }
1518− .sm-pl-39 {
1519− padding-left: 39rem; }
1520− .sm-px-39 {
1521− padding-right: 39rem;
1522− padding-left: 39rem; }
1523− .sm-py-39 {
1524− padding-top: 39rem;
1525− padding-bottom: 39rem; }
1526− .sm-m-40 {
1527− margin: 40rem; }
1528− .sm-mt-40 {
1529− margin-top: 40rem; }
1530− .sm-mb-40 {
1531− margin-bottom: 40rem; }
1532− .sm-mr-40 {
1533− margin-right: 40rem; }
1534− .sm-ml-40 {
1535− margin-left: 40rem; }
1536− .sm-mx-40 {
1537− margin-right: 40rem;
1538− margin-left: 40rem; }
1539− .sm-my-40 {
1540− margin-top: 40rem;
1541− margin-bottom: 40rem; }
1542− .sm-p-40 {
1543− padding: 40rem; }
1544− .sm-pt-40 {
1545− padding-top: 40rem; }
1546− .sm-pb-40 {
1547− padding-bottom: 40rem; }
1548− .sm-pr-40 {
1549− padding-right: 40rem; }
1550− .sm-pl-40 {
1551− padding-left: 40rem; }
1552− .sm-px-40 {
1553− padding-right: 40rem;
1554− padding-left: 40rem; }
1555− .sm-py-40 {
1556− padding-top: 40rem;
1557− padding-bottom: 40rem; }
1558− .sm-m-41 {
1559− margin: 41rem; }
1560− .sm-mt-41 {
1561− margin-top: 41rem; }
1562− .sm-mb-41 {
1563− margin-bottom: 41rem; }
1564− .sm-mr-41 {
1565− margin-right: 41rem; }
1566− .sm-ml-41 {
1567− margin-left: 41rem; }
1568− .sm-mx-41 {
1569− margin-right: 41rem;
1570− margin-left: 41rem; }
1571− .sm-my-41 {
1572− margin-top: 41rem;
1573− margin-bottom: 41rem; }
1574− .sm-p-41 {
1575− padding: 41rem; }
1576− .sm-pt-41 {
1577− padding-top: 41rem; }
1578− .sm-pb-41 {
1579− padding-bottom: 41rem; }
1580− .sm-pr-41 {
1581− padding-right: 41rem; }
1582− .sm-pl-41 {
1583− padding-left: 41rem; }
1584− .sm-px-41 {
1585− padding-right: 41rem;
1586− padding-left: 41rem; }
1587− .sm-py-41 {
1588− padding-top: 41rem;
1589− padding-bottom: 41rem; }
1590− .sm-m-42 {
1591− margin: 42rem; }
1592− .sm-mt-42 {
1593− margin-top: 42rem; }
1594− .sm-mb-42 {
1595− margin-bottom: 42rem; }
1596− .sm-mr-42 {
1597− margin-right: 42rem; }
1598− .sm-ml-42 {
1599− margin-left: 42rem; }
1600− .sm-mx-42 {
1601− margin-right: 42rem;
1602− margin-left: 42rem; }
1603− .sm-my-42 {
1604− margin-top: 42rem;
1605− margin-bottom: 42rem; }
1606− .sm-p-42 {
1607− padding: 42rem; }
1608− .sm-pt-42 {
1609− padding-top: 42rem; }
1610− .sm-pb-42 {
1611− padding-bottom: 42rem; }
1612− .sm-pr-42 {
1613− padding-right: 42rem; }
1614− .sm-pl-42 {
1615− padding-left: 42rem; }
1616− .sm-px-42 {
1617− padding-right: 42rem;
1618− padding-left: 42rem; }
1619− .sm-py-42 {
1620− padding-top: 42rem;
1621− padding-bottom: 42rem; }
1622− .sm-m-43 {
1623− margin: 43rem; }
1624− .sm-mt-43 {
1625− margin-top: 43rem; }
1626− .sm-mb-43 {
1627− margin-bottom: 43rem; }
1628− .sm-mr-43 {
1629− margin-right: 43rem; }
1630− .sm-ml-43 {
1631− margin-left: 43rem; }
1632− .sm-mx-43 {
1633− margin-right: 43rem;
1634− margin-left: 43rem; }
1635− .sm-my-43 {
1636− margin-top: 43rem;
1637− margin-bottom: 43rem; }
1638− .sm-p-43 {
1639− padding: 43rem; }
1640− .sm-pt-43 {
1641− padding-top: 43rem; }
1642− .sm-pb-43 {
1643− padding-bottom: 43rem; }
1644− .sm-pr-43 {
1645− padding-right: 43rem; }
1646− .sm-pl-43 {
1647− padding-left: 43rem; }
1648− .sm-px-43 {
1649− padding-right: 43rem;
1650− padding-left: 43rem; }
1651− .sm-py-43 {
1652− padding-top: 43rem;
1653− padding-bottom: 43rem; }
1654− .sm-m-44 {
1655− margin: 44rem; }
1656− .sm-mt-44 {
1657− margin-top: 44rem; }
1658− .sm-mb-44 {
1659− margin-bottom: 44rem; }
1660− .sm-mr-44 {
1661− margin-right: 44rem; }
1662− .sm-ml-44 {
1663− margin-left: 44rem; }
1664− .sm-mx-44 {
1665− margin-right: 44rem;
1666− margin-left: 44rem; }
1667− .sm-my-44 {
1668− margin-top: 44rem;
1669− margin-bottom: 44rem; }
1670− .sm-p-44 {
1671− padding: 44rem; }
1672− .sm-pt-44 {
1673− padding-top: 44rem; }
1674− .sm-pb-44 {
1675− padding-bottom: 44rem; }
1676− .sm-pr-44 {
1677− padding-right: 44rem; }
1678− .sm-pl-44 {
1679− padding-left: 44rem; }
1680− .sm-px-44 {
1681− padding-right: 44rem;
1682− padding-left: 44rem; }
1683− .sm-py-44 {
1684− padding-top: 44rem;
1685− padding-bottom: 44rem; }
1686− .sm-m-45 {
1687− margin: 45rem; }
1688− .sm-mt-45 {
1689− margin-top: 45rem; }
1690− .sm-mb-45 {
1691− margin-bottom: 45rem; }
1692− .sm-mr-45 {
1693− margin-right: 45rem; }
1694− .sm-ml-45 {
1695− margin-left: 45rem; }
1696− .sm-mx-45 {
1697− margin-right: 45rem;
1698− margin-left: 45rem; }
1699− .sm-my-45 {
1700− margin-top: 45rem;
1701− margin-bottom: 45rem; }
1702− .sm-p-45 {
1703− padding: 45rem; }
1704− .sm-pt-45 {
1705− padding-top: 45rem; }
1706− .sm-pb-45 {
1707− padding-bottom: 45rem; }
1708− .sm-pr-45 {
1709− padding-right: 45rem; }
1710− .sm-pl-45 {
1711− padding-left: 45rem; }
1712− .sm-px-45 {
1713− padding-right: 45rem;
1714− padding-left: 45rem; }
1715− .sm-py-45 {
1716− padding-top: 45rem;
1717− padding-bottom: 45rem; }
1718− .sm-m-46 {
1719− margin: 46rem; }
1720− .sm-mt-46 {
1721− margin-top: 46rem; }
1722− .sm-mb-46 {
1723− margin-bottom: 46rem; }
1724− .sm-mr-46 {
1725− margin-right: 46rem; }
1726− .sm-ml-46 {
1727− margin-left: 46rem; }
1728− .sm-mx-46 {
1729− margin-right: 46rem;
1730− margin-left: 46rem; }
1731− .sm-my-46 {
1732− margin-top: 46rem;
1733− margin-bottom: 46rem; }
1734− .sm-p-46 {
1735− padding: 46rem; }
1736− .sm-pt-46 {
1737− padding-top: 46rem; }
1738− .sm-pb-46 {
1739− padding-bottom: 46rem; }
1740− .sm-pr-46 {
1741− padding-right: 46rem; }
1742− .sm-pl-46 {
1743− padding-left: 46rem; }
1744− .sm-px-46 {
1745− padding-right: 46rem;
1746− padding-left: 46rem; }
1747− .sm-py-46 {
1748− padding-top: 46rem;
1749− padding-bottom: 46rem; }
1750− .sm-m-47 {
1751− margin: 47rem; }
1752− .sm-mt-47 {
1753− margin-top: 47rem; }
1754− .sm-mb-47 {
1755− margin-bottom: 47rem; }
1756− .sm-mr-47 {
1757− margin-right: 47rem; }
1758− .sm-ml-47 {
1759− margin-left: 47rem; }
1760− .sm-mx-47 {
1761− margin-right: 47rem;
1762− margin-left: 47rem; }
1763− .sm-my-47 {
1764− margin-top: 47rem;
1765− margin-bottom: 47rem; }
1766− .sm-p-47 {
1767− padding: 47rem; }
1768− .sm-pt-47 {
1769− padding-top: 47rem; }
1770− .sm-pb-47 {
1771− padding-bottom: 47rem; }
1772− .sm-pr-47 {
1773− padding-right: 47rem; }
1774− .sm-pl-47 {
1775− padding-left: 47rem; }
1776− .sm-px-47 {
1777− padding-right: 47rem;
1778− padding-left: 47rem; }
1779− .sm-py-47 {
1780− padding-top: 47rem;
1781− padding-bottom: 47rem; }
1782− .sm-m-48 {
1783− margin: 48rem; }
1784− .sm-mt-48 {
1785− margin-top: 48rem; }
1786− .sm-mb-48 {
1787− margin-bottom: 48rem; }
1788− .sm-mr-48 {
1789− margin-right: 48rem; }
1790− .sm-ml-48 {
1791− margin-left: 48rem; }
1792− .sm-mx-48 {
1793− margin-right: 48rem;
1794− margin-left: 48rem; }
1795− .sm-my-48 {
1796− margin-top: 48rem;
1797− margin-bottom: 48rem; }
1798− .sm-p-48 {
1799− padding: 48rem; }
1800− .sm-pt-48 {
1801− padding-top: 48rem; }
1802− .sm-pb-48 {
1803− padding-bottom: 48rem; }
1804− .sm-pr-48 {
1805− padding-right: 48rem; }
1806− .sm-pl-48 {
1807− padding-left: 48rem; }
1808− .sm-px-48 {
1809− padding-right: 48rem;
1810− padding-left: 48rem; }
1811− .sm-py-48 {
1812− padding-top: 48rem;
1813− padding-bottom: 48rem; }
1814− .sm-m-49 {
1815− margin: 49rem; }
1816− .sm-mt-49 {
1817− margin-top: 49rem; }
1818− .sm-mb-49 {
1819− margin-bottom: 49rem; }
1820− .sm-mr-49 {
1821− margin-right: 49rem; }
1822− .sm-ml-49 {
1823− margin-left: 49rem; }
1824− .sm-mx-49 {
1825− margin-right: 49rem;
1826− margin-left: 49rem; }
1827− .sm-my-49 {
1828− margin-top: 49rem;
1829− margin-bottom: 49rem; }
1830− .sm-p-49 {
1831− padding: 49rem; }
1832− .sm-pt-49 {
1833− padding-top: 49rem; }
1834− .sm-pb-49 {
1835− padding-bottom: 49rem; }
1836− .sm-pr-49 {
1837− padding-right: 49rem; }
1838− .sm-pl-49 {
1839− padding-left: 49rem; }
1840− .sm-px-49 {
1841− padding-right: 49rem;
1842− padding-left: 49rem; }
1843− .sm-py-49 {
1844− padding-top: 49rem;
1845− padding-bottom: 49rem; }
1846− .sm-m-50 {
1847− margin: 50rem; }
1848− .sm-mt-50 {
1849− margin-top: 50rem; }
1850− .sm-mb-50 {
1851− margin-bottom: 50rem; }
1852− .sm-mr-50 {
1853− margin-right: 50rem; }
1854− .sm-ml-50 {
1855− margin-left: 50rem; }
1856− .sm-mx-50 {
1857− margin-right: 50rem;
1858− margin-left: 50rem; }
1859− .sm-my-50 {
1860− margin-top: 50rem;
1861− margin-bottom: 50rem; }
1862− .sm-p-50 {
1863− padding: 50rem; }
1864− .sm-pt-50 {
1865− padding-top: 50rem; }
1866− .sm-pb-50 {
1867− padding-bottom: 50rem; }
1868− .sm-pr-50 {
1869− padding-right: 50rem; }
1870− .sm-pl-50 {
1871− padding-left: 50rem; }
1872− .sm-px-50 {
1873− padding-right: 50rem;
1874− padding-left: 50rem; }
1875− .sm-py-50 {
1876− padding-top: 50rem;
1877− padding-bottom: 50rem; }
1878− .sm-m-51 {
1879− margin: 51rem; }
1880− .sm-mt-51 {
1881− margin-top: 51rem; }
1882− .sm-mb-51 {
1883− margin-bottom: 51rem; }
1884− .sm-mr-51 {
1885− margin-right: 51rem; }
1886− .sm-ml-51 {
1887− margin-left: 51rem; }
1888− .sm-mx-51 {
1889− margin-right: 51rem;
1890− margin-left: 51rem; }
1891− .sm-my-51 {
1892− margin-top: 51rem;
1893− margin-bottom: 51rem; }
1894− .sm-p-51 {
1895− padding: 51rem; }
1896− .sm-pt-51 {
1897− padding-top: 51rem; }
1898− .sm-pb-51 {
1899− padding-bottom: 51rem; }
1900− .sm-pr-51 {
1901− padding-right: 51rem; }
1902− .sm-pl-51 {
1903− padding-left: 51rem; }
1904− .sm-px-51 {
1905− padding-right: 51rem;
1906− padding-left: 51rem; }
1907− .sm-py-51 {
1908− padding-top: 51rem;
1909− padding-bottom: 51rem; }
1910− .sm-m-52 {
1911− margin: 52rem; }
1912− .sm-mt-52 {
1913− margin-top: 52rem; }
1914− .sm-mb-52 {
1915− margin-bottom: 52rem; }
1916− .sm-mr-52 {
1917− margin-right: 52rem; }
1918− .sm-ml-52 {
1919− margin-left: 52rem; }
1920− .sm-mx-52 {
1921− margin-right: 52rem;
1922− margin-left: 52rem; }
1923− .sm-my-52 {
1924− margin-top: 52rem;
1925− margin-bottom: 52rem; }
1926− .sm-p-52 {
1927− padding: 52rem; }
1928− .sm-pt-52 {
1929− padding-top: 52rem; }
1930− .sm-pb-52 {
1931− padding-bottom: 52rem; }
1932− .sm-pr-52 {
1933− padding-right: 52rem; }
1934− .sm-pl-52 {
1935− padding-left: 52rem; }
1936− .sm-px-52 {
1937− padding-right: 52rem;
1938− padding-left: 52rem; }
1939− .sm-py-52 {
1940− padding-top: 52rem;
1941− padding-bottom: 52rem; }
1942− .sm-m-53 {
1943− margin: 53rem; }
1944− .sm-mt-53 {
1945− margin-top: 53rem; }
1946− .sm-mb-53 {
1947− margin-bottom: 53rem; }
1948− .sm-mr-53 {
1949− margin-right: 53rem; }
1950− .sm-ml-53 {
1951− margin-left: 53rem; }
1952− .sm-mx-53 {
1953− margin-right: 53rem;
1954− margin-left: 53rem; }
1955− .sm-my-53 {
1956− margin-top: 53rem;
1957− margin-bottom: 53rem; }
1958− .sm-p-53 {
1959− padding: 53rem; }
1960− .sm-pt-53 {
1961− padding-top: 53rem; }
1962− .sm-pb-53 {
1963− padding-bottom: 53rem; }
1964− .sm-pr-53 {
1965− padding-right: 53rem; }
1966− .sm-pl-53 {
1967− padding-left: 53rem; }
1968− .sm-px-53 {
1969− padding-right: 53rem;
1970− padding-left: 53rem; }
1971− .sm-py-53 {
1972− padding-top: 53rem;
1973− padding-bottom: 53rem; }
1974− .sm-m-54 {
1975− margin: 54rem; }
1976− .sm-mt-54 {
1977− margin-top: 54rem; }
1978− .sm-mb-54 {
1979− margin-bottom: 54rem; }
1980− .sm-mr-54 {
1981− margin-right: 54rem; }
1982− .sm-ml-54 {
1983− margin-left: 54rem; }
1984− .sm-mx-54 {
1985− margin-right: 54rem;
1986− margin-left: 54rem; }
1987− .sm-my-54 {
1988− margin-top: 54rem;
1989− margin-bottom: 54rem; }
1990− .sm-p-54 {
1991− padding: 54rem; }
1992− .sm-pt-54 {
1993− padding-top: 54rem; }
1994− .sm-pb-54 {
1995− padding-bottom: 54rem; }
1996− .sm-pr-54 {
1997− padding-right: 54rem; }
1998− .sm-pl-54 {
1999− padding-left: 54rem; }
2000− .sm-px-54 {
2001− padding-right: 54rem;
2002− padding-left: 54rem; }
2003− .sm-py-54 {
2004− padding-top: 54rem;
2005− padding-bottom: 54rem; }
2006− .sm-m-55 {
2007− margin: 55rem; }
2008− .sm-mt-55 {
2009− margin-top: 55rem; }
2010− .sm-mb-55 {
2011− margin-bottom: 55rem; }
2012− .sm-mr-55 {
2013− margin-right: 55rem; }
2014− .sm-ml-55 {
2015− margin-left: 55rem; }
2016− .sm-mx-55 {
2017− margin-right: 55rem;
2018− margin-left: 55rem; }
2019− .sm-my-55 {
2020− margin-top: 55rem;
2021− margin-bottom: 55rem; }
2022− .sm-p-55 {
2023− padding: 55rem; }
2024− .sm-pt-55 {
2025− padding-top: 55rem; }
2026− .sm-pb-55 {
2027− padding-bottom: 55rem; }
2028− .sm-pr-55 {
2029− padding-right: 55rem; }
2030− .sm-pl-55 {
2031− padding-left: 55rem; }
2032− .sm-px-55 {
2033− padding-right: 55rem;
2034− padding-left: 55rem; }
2035− .sm-py-55 {
2036− padding-top: 55rem;
2037− padding-bottom: 55rem; }
2038− .sm-m-56 {
2039− margin: 56rem; }
2040− .sm-mt-56 {
2041− margin-top: 56rem; }
2042− .sm-mb-56 {
2043− margin-bottom: 56rem; }
2044− .sm-mr-56 {
2045− margin-right: 56rem; }
2046− .sm-ml-56 {
2047− margin-left: 56rem; }
2048− .sm-mx-56 {
2049− margin-right: 56rem;
2050− margin-left: 56rem; }
2051− .sm-my-56 {
2052− margin-top: 56rem;
2053− margin-bottom: 56rem; }
2054− .sm-p-56 {
2055− padding: 56rem; }
2056− .sm-pt-56 {
2057− padding-top: 56rem; }
2058− .sm-pb-56 {
2059− padding-bottom: 56rem; }
2060− .sm-pr-56 {
2061− padding-right: 56rem; }
2062− .sm-pl-56 {
2063− padding-left: 56rem; }
2064− .sm-px-56 {
2065− padding-right: 56rem;
2066− padding-left: 56rem; }
2067− .sm-py-56 {
2068− padding-top: 56rem;
2069− padding-bottom: 56rem; }
2070− .sm-m-57 {
2071− margin: 57rem; }
2072− .sm-mt-57 {
2073− margin-top: 57rem; }
2074− .sm-mb-57 {
2075− margin-bottom: 57rem; }
2076− .sm-mr-57 {
2077− margin-right: 57rem; }
2078− .sm-ml-57 {
2079− margin-left: 57rem; }
2080− .sm-mx-57 {
2081− margin-right: 57rem;
2082− margin-left: 57rem; }
2083− .sm-my-57 {
2084− margin-top: 57rem;
2085− margin-bottom: 57rem; }
2086− .sm-p-57 {
2087− padding: 57rem; }
2088− .sm-pt-57 {
2089− padding-top: 57rem; }
2090− .sm-pb-57 {
2091− padding-bottom: 57rem; }
2092− .sm-pr-57 {
2093− padding-right: 57rem; }
2094− .sm-pl-57 {
2095− padding-left: 57rem; }
2096− .sm-px-57 {
2097− padding-right: 57rem;
2098− padding-left: 57rem; }
2099− .sm-py-57 {
2100− padding-top: 57rem;
2101− padding-bottom: 57rem; }
2102− .sm-m-58 {
2103− margin: 58rem; }
2104− .sm-mt-58 {
2105− margin-top: 58rem; }
2106− .sm-mb-58 {
2107− margin-bottom: 58rem; }
2108− .sm-mr-58 {
2109− margin-right: 58rem; }
2110− .sm-ml-58 {
2111− margin-left: 58rem; }
2112− .sm-mx-58 {
2113− margin-right: 58rem;
2114− margin-left: 58rem; }
2115− .sm-my-58 {
2116− margin-top: 58rem;
2117− margin-bottom: 58rem; }
2118− .sm-p-58 {
2119− padding: 58rem; }
2120− .sm-pt-58 {
2121− padding-top: 58rem; }
2122− .sm-pb-58 {
2123− padding-bottom: 58rem; }
2124− .sm-pr-58 {
2125− padding-right: 58rem; }
2126− .sm-pl-58 {
2127− padding-left: 58rem; }
2128− .sm-px-58 {
2129− padding-right: 58rem;
2130− padding-left: 58rem; }
2131− .sm-py-58 {
2132− padding-top: 58rem;
2133− padding-bottom: 58rem; }
2134− .sm-m-59 {
2135− margin: 59rem; }
2136− .sm-mt-59 {
2137− margin-top: 59rem; }
2138− .sm-mb-59 {
2139− margin-bottom: 59rem; }
2140− .sm-mr-59 {
2141− margin-right: 59rem; }
2142− .sm-ml-59 {
2143− margin-left: 59rem; }
2144− .sm-mx-59 {
2145− margin-right: 59rem;
2146− margin-left: 59rem; }
2147− .sm-my-59 {
2148− margin-top: 59rem;
2149− margin-bottom: 59rem; }
2150− .sm-p-59 {
2151− padding: 59rem; }
2152− .sm-pt-59 {
2153− padding-top: 59rem; }
2154− .sm-pb-59 {
2155− padding-bottom: 59rem; }
2156− .sm-pr-59 {
2157− padding-right: 59rem; }
2158− .sm-pl-59 {
2159− padding-left: 59rem; }
2160− .sm-px-59 {
2161− padding-right: 59rem;
2162− padding-left: 59rem; }
2163− .sm-py-59 {
2164− padding-top: 59rem;
2165− padding-bottom: 59rem; }
2166− .sm-m-60 {
2167− margin: 60rem; }
2168− .sm-mt-60 {
2169− margin-top: 60rem; }
2170− .sm-mb-60 {
2171− margin-bottom: 60rem; }
2172− .sm-mr-60 {
2173− margin-right: 60rem; }
2174− .sm-ml-60 {
2175− margin-left: 60rem; }
2176− .sm-mx-60 {
2177− margin-right: 60rem;
2178− margin-left: 60rem; }
2179− .sm-my-60 {
2180− margin-top: 60rem;
2181− margin-bottom: 60rem; }
2182− .sm-p-60 {
2183− padding: 60rem; }
2184− .sm-pt-60 {
2185− padding-top: 60rem; }
2186− .sm-pb-60 {
2187− padding-bottom: 60rem; }
2188− .sm-pr-60 {
2189− padding-right: 60rem; }
2190− .sm-pl-60 {
2191− padding-left: 60rem; }
2192− .sm-px-60 {
2193− padding-right: 60rem;
2194− padding-left: 60rem; }
2195− .sm-py-60 {
2196− padding-top: 60rem;
2197− padding-bottom: 60rem; }
2198− .sm-m-61 {
2199− margin: 61rem; }
2200− .sm-mt-61 {
2201− margin-top: 61rem; }
2202− .sm-mb-61 {
2203− margin-bottom: 61rem; }
2204− .sm-mr-61 {
2205− margin-right: 61rem; }
2206− .sm-ml-61 {
2207− margin-left: 61rem; }
2208− .sm-mx-61 {
2209− margin-right: 61rem;
2210− margin-left: 61rem; }
2211− .sm-my-61 {
2212− margin-top: 61rem;
2213− margin-bottom: 61rem; }
2214− .sm-p-61 {
2215− padding: 61rem; }
2216− .sm-pt-61 {
2217− padding-top: 61rem; }
2218− .sm-pb-61 {
2219− padding-bottom: 61rem; }
2220− .sm-pr-61 {
2221− padding-right: 61rem; }
2222− .sm-pl-61 {
2223− padding-left: 61rem; }
2224− .sm-px-61 {
2225− padding-right: 61rem;
2226− padding-left: 61rem; }
2227− .sm-py-61 {
2228− padding-top: 61rem;
2229− padding-bottom: 61rem; }
2230− .sm-m-62 {
2231− margin: 62rem; }
2232− .sm-mt-62 {
2233− margin-top: 62rem; }
2234− .sm-mb-62 {
2235− margin-bottom: 62rem; }
2236− .sm-mr-62 {
2237− margin-right: 62rem; }
2238− .sm-ml-62 {
2239− margin-left: 62rem; }
2240− .sm-mx-62 {
2241− margin-right: 62rem;
2242− margin-left: 62rem; }
2243− .sm-my-62 {
2244− margin-top: 62rem;
2245− margin-bottom: 62rem; }
2246− .sm-p-62 {
2247− padding: 62rem; }
2248− .sm-pt-62 {
2249− padding-top: 62rem; }
2250− .sm-pb-62 {
2251− padding-bottom: 62rem; }
2252− .sm-pr-62 {
2253− padding-right: 62rem; }
2254− .sm-pl-62 {
2255− padding-left: 62rem; }
2256− .sm-px-62 {
2257− padding-right: 62rem;
2258− padding-left: 62rem; }
2259− .sm-py-62 {
2260− padding-top: 62rem;
2261− padding-bottom: 62rem; }
2262− .sm-m-63 {
2263− margin: 63rem; }
2264− .sm-mt-63 {
2265− margin-top: 63rem; }
2266− .sm-mb-63 {
2267− margin-bottom: 63rem; }
2268− .sm-mr-63 {
2269− margin-right: 63rem; }
2270− .sm-ml-63 {
2271− margin-left: 63rem; }
2272− .sm-mx-63 {
2273− margin-right: 63rem;
2274− margin-left: 63rem; }
2275− .sm-my-63 {
2276− margin-top: 63rem;
2277− margin-bottom: 63rem; }
2278− .sm-p-63 {
2279− padding: 63rem; }
2280− .sm-pt-63 {
2281− padding-top: 63rem; }
2282− .sm-pb-63 {
2283− padding-bottom: 63rem; }
2284− .sm-pr-63 {
2285− padding-right: 63rem; }
2286− .sm-pl-63 {
2287− padding-left: 63rem; }
2288− .sm-px-63 {
2289− padding-right: 63rem;
2290− padding-left: 63rem; }
2291− .sm-py-63 {
2292− padding-top: 63rem;
2293− padding-bottom: 63rem; }
2294− .sm-m-64 {
2295− margin: 64rem; }
2296− .sm-mt-64 {
2297− margin-top: 64rem; }
2298− .sm-mb-64 {
2299− margin-bottom: 64rem; }
2300− .sm-mr-64 {
2301− margin-right: 64rem; }
2302− .sm-ml-64 {
2303− margin-left: 64rem; }
2304− .sm-mx-64 {
2305− margin-right: 64rem;
2306− margin-left: 64rem; }
2307− .sm-my-64 {
2308− margin-top: 64rem;
2309− margin-bottom: 64rem; }
2310− .sm-p-64 {
2311− padding: 64rem; }
2312− .sm-pt-64 {
2313− padding-top: 64rem; }
2314− .sm-pb-64 {
2315− padding-bottom: 64rem; }
2316− .sm-pr-64 {
2317− padding-right: 64rem; }
2318− .sm-pl-64 {
2319− padding-left: 64rem; }
2320− .sm-px-64 {
2321− padding-right: 64rem;
2322− padding-left: 64rem; }
2323− .sm-py-64 {
2324− padding-top: 64rem;
2325− padding-bottom: 64rem; }
2326− .sm-m-65 {
2327− margin: 65rem; }
2328− .sm-mt-65 {
2329− margin-top: 65rem; }
2330− .sm-mb-65 {
2331− margin-bottom: 65rem; }
2332− .sm-mr-65 {
2333− margin-right: 65rem; }
2334− .sm-ml-65 {
2335− margin-left: 65rem; }
2336− .sm-mx-65 {
2337− margin-right: 65rem;
2338− margin-left: 65rem; }
2339− .sm-my-65 {
2340− margin-top: 65rem;
2341− margin-bottom: 65rem; }
2342− .sm-p-65 {
2343− padding: 65rem; }
2344− .sm-pt-65 {
2345− padding-top: 65rem; }
2346− .sm-pb-65 {
2347− padding-bottom: 65rem; }
2348− .sm-pr-65 {
2349− padding-right: 65rem; }
2350− .sm-pl-65 {
2351− padding-left: 65rem; }
2352− .sm-px-65 {
2353− padding-right: 65rem;
2354− padding-left: 65rem; }
2355− .sm-py-65 {
2356− padding-top: 65rem;
2357− padding-bottom: 65rem; }
2358− .sm-m-66 {
2359− margin: 66rem; }
2360− .sm-mt-66 {
2361− margin-top: 66rem; }
2362− .sm-mb-66 {
2363− margin-bottom: 66rem; }
2364− .sm-mr-66 {
2365− margin-right: 66rem; }
2366− .sm-ml-66 {
2367− margin-left: 66rem; }
2368− .sm-mx-66 {
2369− margin-right: 66rem;
2370− margin-left: 66rem; }
2371− .sm-my-66 {
2372− margin-top: 66rem;
2373− margin-bottom: 66rem; }
2374− .sm-p-66 {
2375− padding: 66rem; }
2376− .sm-pt-66 {
2377− padding-top: 66rem; }
2378− .sm-pb-66 {
2379− padding-bottom: 66rem; }
2380− .sm-pr-66 {
2381− padding-right: 66rem; }
2382− .sm-pl-66 {
2383− padding-left: 66rem; }
2384− .sm-px-66 {
2385− padding-right: 66rem;
2386− padding-left: 66rem; }
2387− .sm-py-66 {
2388− padding-top: 66rem;
2389− padding-bottom: 66rem; }
2390− .sm-m-67 {
2391− margin: 67rem; }
2392− .sm-mt-67 {
2393− margin-top: 67rem; }
2394− .sm-mb-67 {
2395− margin-bottom: 67rem; }
2396− .sm-mr-67 {
2397− margin-right: 67rem; }
2398− .sm-ml-67 {
2399− margin-left: 67rem; }
2400− .sm-mx-67 {
2401− margin-right: 67rem;
2402− margin-left: 67rem; }
2403− .sm-my-67 {
2404− margin-top: 67rem;
2405− margin-bottom: 67rem; }
2406− .sm-p-67 {
2407− padding: 67rem; }
2408− .sm-pt-67 {
2409− padding-top: 67rem; }
2410− .sm-pb-67 {
2411− padding-bottom: 67rem; }
2412− .sm-pr-67 {
2413− padding-right: 67rem; }
2414− .sm-pl-67 {
2415− padding-left: 67rem; }
2416− .sm-px-67 {
2417− padding-right: 67rem;
2418− padding-left: 67rem; }
2419− .sm-py-67 {
2420− padding-top: 67rem;
2421− padding-bottom: 67rem; }
2422− .sm-m-68 {
2423− margin: 68rem; }
2424− .sm-mt-68 {
2425− margin-top: 68rem; }
2426− .sm-mb-68 {
2427− margin-bottom: 68rem; }
2428− .sm-mr-68 {
2429− margin-right: 68rem; }
2430− .sm-ml-68 {
2431− margin-left: 68rem; }
2432− .sm-mx-68 {
2433− margin-right: 68rem;
2434− margin-left: 68rem; }
2435− .sm-my-68 {
2436− margin-top: 68rem;
2437− margin-bottom: 68rem; }
2438− .sm-p-68 {
2439− padding: 68rem; }
2440− .sm-pt-68 {
2441− padding-top: 68rem; }
2442− .sm-pb-68 {
2443− padding-bottom: 68rem; }
2444− .sm-pr-68 {
2445− padding-right: 68rem; }
2446− .sm-pl-68 {
2447− padding-left: 68rem; }
2448− .sm-px-68 {
2449− padding-right: 68rem;
2450− padding-left: 68rem; }
2451− .sm-py-68 {
2452− padding-top: 68rem;
2453− padding-bottom: 68rem; }
2454− .sm-m-69 {
2455− margin: 69rem; }
2456− .sm-mt-69 {
2457− margin-top: 69rem; }
2458− .sm-mb-69 {
2459− margin-bottom: 69rem; }
2460− .sm-mr-69 {
2461− margin-right: 69rem; }
2462− .sm-ml-69 {
2463− margin-left: 69rem; }
2464− .sm-mx-69 {
2465− margin-right: 69rem;
2466− margin-left: 69rem; }
2467− .sm-my-69 {
2468− margin-top: 69rem;
2469− margin-bottom: 69rem; }
2470− .sm-p-69 {
2471− padding: 69rem; }
2472− .sm-pt-69 {
2473− padding-top: 69rem; }
2474− .sm-pb-69 {
2475− padding-bottom: 69rem; }
2476− .sm-pr-69 {
2477− padding-right: 69rem; }
2478− .sm-pl-69 {
2479− padding-left: 69rem; }
2480− .sm-px-69 {
2481− padding-right: 69rem;
2482− padding-left: 69rem; }
2483− .sm-py-69 {
2484− padding-top: 69rem;
2485− padding-bottom: 69rem; }
2486− .sm-m-70 {
2487− margin: 70rem; }
2488− .sm-mt-70 {
2489− margin-top: 70rem; }
2490− .sm-mb-70 {
2491− margin-bottom: 70rem; }
2492− .sm-mr-70 {
2493− margin-right: 70rem; }
2494− .sm-ml-70 {
2495− margin-left: 70rem; }
2496− .sm-mx-70 {
2497− margin-right: 70rem;
2498− margin-left: 70rem; }
2499− .sm-my-70 {
2500− margin-top: 70rem;
2501− margin-bottom: 70rem; }
2502− .sm-p-70 {
2503− padding: 70rem; }
2504− .sm-pt-70 {
2505− padding-top: 70rem; }
2506− .sm-pb-70 {
2507− padding-bottom: 70rem; }
2508− .sm-pr-70 {
2509− padding-right: 70rem; }
2510− .sm-pl-70 {
2511− padding-left: 70rem; }
2512− .sm-px-70 {
2513− padding-right: 70rem;
2514− padding-left: 70rem; }
2515− .sm-py-70 {
2516− padding-top: 70rem;
2517− padding-bottom: 70rem; }
2518− .sm-m-71 {
2519− margin: 71rem; }
2520− .sm-mt-71 {
2521− margin-top: 71rem; }
2522− .sm-mb-71 {
2523− margin-bottom: 71rem; }
2524− .sm-mr-71 {
2525− margin-right: 71rem; }
2526− .sm-ml-71 {
2527− margin-left: 71rem; }
2528− .sm-mx-71 {
2529− margin-right: 71rem;
2530− margin-left: 71rem; }
2531− .sm-my-71 {
2532− margin-top: 71rem;
2533− margin-bottom: 71rem; }
2534− .sm-p-71 {
2535− padding: 71rem; }
2536− .sm-pt-71 {
2537− padding-top: 71rem; }
2538− .sm-pb-71 {
2539− padding-bottom: 71rem; }
2540− .sm-pr-71 {
2541− padding-right: 71rem; }
2542− .sm-pl-71 {
2543− padding-left: 71rem; }
2544− .sm-px-71 {
2545− padding-right: 71rem;
2546− padding-left: 71rem; }
2547− .sm-py-71 {
2548− padding-top: 71rem;
2549− padding-bottom: 71rem; }
2550− .sm-m-72 {
2551− margin: 72rem; }
2552− .sm-mt-72 {
2553− margin-top: 72rem; }
2554− .sm-mb-72 {
2555− margin-bottom: 72rem; }
2556− .sm-mr-72 {
2557− margin-right: 72rem; }
2558− .sm-ml-72 {
2559− margin-left: 72rem; }
2560− .sm-mx-72 {
2561− margin-right: 72rem;
2562− margin-left: 72rem; }
2563− .sm-my-72 {
2564− margin-top: 72rem;
2565− margin-bottom: 72rem; }
2566− .sm-p-72 {
2567− padding: 72rem; }
2568− .sm-pt-72 {
2569− padding-top: 72rem; }
2570− .sm-pb-72 {
2571− padding-bottom: 72rem; }
2572− .sm-pr-72 {
2573− padding-right: 72rem; }
2574− .sm-pl-72 {
2575− padding-left: 72rem; }
2576− .sm-px-72 {
2577− padding-right: 72rem;
2578− padding-left: 72rem; }
2579− .sm-py-72 {
2580− padding-top: 72rem;
2581− padding-bottom: 72rem; }
2582− .sm-m-73 {
2583− margin: 73rem; }
2584− .sm-mt-73 {
2585− margin-top: 73rem; }
2586− .sm-mb-73 {
2587− margin-bottom: 73rem; }
2588− .sm-mr-73 {
2589− margin-right: 73rem; }
2590− .sm-ml-73 {
2591− margin-left: 73rem; }
2592− .sm-mx-73 {
2593− margin-right: 73rem;
2594− margin-left: 73rem; }
2595− .sm-my-73 {
2596− margin-top: 73rem;
2597− margin-bottom: 73rem; }
2598− .sm-p-73 {
2599− padding: 73rem; }
2600− .sm-pt-73 {
2601− padding-top: 73rem; }
2602− .sm-pb-73 {
2603− padding-bottom: 73rem; }
2604− .sm-pr-73 {
2605− padding-right: 73rem; }
2606− .sm-pl-73 {
2607− padding-left: 73rem; }
2608− .sm-px-73 {
2609− padding-right: 73rem;
2610− padding-left: 73rem; }
2611− .sm-py-73 {
2612− padding-top: 73rem;
2613− padding-bottom: 73rem; }
2614− .sm-m-74 {
2615− margin: 74rem; }
2616− .sm-mt-74 {
2617− margin-top: 74rem; }
2618− .sm-mb-74 {
2619− margin-bottom: 74rem; }
2620− .sm-mr-74 {
2621− margin-right: 74rem; }
2622− .sm-ml-74 {
2623− margin-left: 74rem; }
2624− .sm-mx-74 {
2625− margin-right: 74rem;
2626− margin-left: 74rem; }
2627− .sm-my-74 {
2628− margin-top: 74rem;
2629− margin-bottom: 74rem; }
2630− .sm-p-74 {
2631− padding: 74rem; }
2632− .sm-pt-74 {
2633− padding-top: 74rem; }
2634− .sm-pb-74 {
2635− padding-bottom: 74rem; }
2636− .sm-pr-74 {
2637− padding-right: 74rem; }
2638− .sm-pl-74 {
2639− padding-left: 74rem; }
2640− .sm-px-74 {
2641− padding-right: 74rem;
2642− padding-left: 74rem; }
2643− .sm-py-74 {
2644− padding-top: 74rem;
2645− padding-bottom: 74rem; }
2646− .sm-m-75 {
2647− margin: 75rem; }
2648− .sm-mt-75 {
2649− margin-top: 75rem; }
2650− .sm-mb-75 {
2651− margin-bottom: 75rem; }
2652− .sm-mr-75 {
2653− margin-right: 75rem; }
2654− .sm-ml-75 {
2655− margin-left: 75rem; }
2656− .sm-mx-75 {
2657− margin-right: 75rem;
2658− margin-left: 75rem; }
2659− .sm-my-75 {
2660− margin-top: 75rem;
2661− margin-bottom: 75rem; }
2662− .sm-p-75 {
2663− padding: 75rem; }
2664− .sm-pt-75 {
2665− padding-top: 75rem; }
2666− .sm-pb-75 {
2667− padding-bottom: 75rem; }
2668− .sm-pr-75 {
2669− padding-right: 75rem; }
2670− .sm-pl-75 {
2671− padding-left: 75rem; }
2672− .sm-px-75 {
2673− padding-right: 75rem;
2674− padding-left: 75rem; }
2675− .sm-py-75 {
2676− padding-top: 75rem;
2677− padding-bottom: 75rem; }
2678− .sm-m-76 {
2679− margin: 76rem; }
2680− .sm-mt-76 {
2681− margin-top: 76rem; }
2682− .sm-mb-76 {
2683− margin-bottom: 76rem; }
2684− .sm-mr-76 {
2685− margin-right: 76rem; }
2686− .sm-ml-76 {
2687− margin-left: 76rem; }
2688− .sm-mx-76 {
2689− margin-right: 76rem;
2690− margin-left: 76rem; }
2691− .sm-my-76 {
2692− margin-top: 76rem;
2693− margin-bottom: 76rem; }
2694− .sm-p-76 {
2695− padding: 76rem; }
2696− .sm-pt-76 {
2697− padding-top: 76rem; }
2698− .sm-pb-76 {
2699− padding-bottom: 76rem; }
2700− .sm-pr-76 {
2701− padding-right: 76rem; }
2702− .sm-pl-76 {
2703− padding-left: 76rem; }
2704− .sm-px-76 {
2705− padding-right: 76rem;
2706− padding-left: 76rem; }
2707− .sm-py-76 {
2708− padding-top: 76rem;
2709− padding-bottom: 76rem; }
2710− .sm-m-77 {
2711− margin: 77rem; }
2712− .sm-mt-77 {
2713− margin-top: 77rem; }
2714− .sm-mb-77 {
2715− margin-bottom: 77rem; }
2716− .sm-mr-77 {
2717− margin-right: 77rem; }
2718− .sm-ml-77 {
2719− margin-left: 77rem; }
2720− .sm-mx-77 {
2721− margin-right: 77rem;
2722− margin-left: 77rem; }
2723− .sm-my-77 {
2724− margin-top: 77rem;
2725− margin-bottom: 77rem; }
2726− .sm-p-77 {
2727− padding: 77rem; }
2728− .sm-pt-77 {
2729− padding-top: 77rem; }
2730− .sm-pb-77 {
2731− padding-bottom: 77rem; }
2732− .sm-pr-77 {
2733− padding-right: 77rem; }
2734− .sm-pl-77 {
2735− padding-left: 77rem; }
2736− .sm-px-77 {
2737− padding-right: 77rem;
2738− padding-left: 77rem; }
2739− .sm-py-77 {
2740− padding-top: 77rem;
2741− padding-bottom: 77rem; }
2742− .sm-m-78 {
2743− margin: 78rem; }
2744− .sm-mt-78 {
2745− margin-top: 78rem; }
2746− .sm-mb-78 {
2747− margin-bottom: 78rem; }
2748− .sm-mr-78 {
2749− margin-right: 78rem; }
2750− .sm-ml-78 {
2751− margin-left: 78rem; }
2752− .sm-mx-78 {
2753− margin-right: 78rem;
2754− margin-left: 78rem; }
2755− .sm-my-78 {
2756− margin-top: 78rem;
2757− margin-bottom: 78rem; }
2758− .sm-p-78 {
2759− padding: 78rem; }
2760− .sm-pt-78 {
2761− padding-top: 78rem; }
2762− .sm-pb-78 {
2763− padding-bottom: 78rem; }
2764− .sm-pr-78 {
2765− padding-right: 78rem; }
2766− .sm-pl-78 {
2767− padding-left: 78rem; }
2768− .sm-px-78 {
2769− padding-right: 78rem;
2770− padding-left: 78rem; }
2771− .sm-py-78 {
2772− padding-top: 78rem;
2773− padding-bottom: 78rem; }
2774− .sm-m-79 {
2775− margin: 79rem; }
2776− .sm-mt-79 {
2777− margin-top: 79rem; }
2778− .sm-mb-79 {
2779− margin-bottom: 79rem; }
2780− .sm-mr-79 {
2781− margin-right: 79rem; }
2782− .sm-ml-79 {
2783− margin-left: 79rem; }
2784− .sm-mx-79 {
2785− margin-right: 79rem;
2786− margin-left: 79rem; }
2787− .sm-my-79 {
2788− margin-top: 79rem;
2789− margin-bottom: 79rem; }
2790− .sm-p-79 {
2791− padding: 79rem; }
2792− .sm-pt-79 {
2793− padding-top: 79rem; }
2794− .sm-pb-79 {
2795− padding-bottom: 79rem; }
2796− .sm-pr-79 {
2797− padding-right: 79rem; }
2798− .sm-pl-79 {
2799− padding-left: 79rem; }
2800− .sm-px-79 {
2801− padding-right: 79rem;
2802− padding-left: 79rem; }
2803− .sm-py-79 {
2804− padding-top: 79rem;
2805− padding-bottom: 79rem; }
2806− .sm-m-80 {
2807− margin: 80rem; }
2808− .sm-mt-80 {
2809− margin-top: 80rem; }
2810− .sm-mb-80 {
2811− margin-bottom: 80rem; }
2812− .sm-mr-80 {
2813− margin-right: 80rem; }
2814− .sm-ml-80 {
2815− margin-left: 80rem; }
2816− .sm-mx-80 {
2817− margin-right: 80rem;
2818− margin-left: 80rem; }
2819− .sm-my-80 {
2820− margin-top: 80rem;
2821− margin-bottom: 80rem; }
2822− .sm-p-80 {
2823− padding: 80rem; }
2824− .sm-pt-80 {
2825− padding-top: 80rem; }
2826− .sm-pb-80 {
2827− padding-bottom: 80rem; }
2828− .sm-pr-80 {
2829− padding-right: 80rem; }
2830− .sm-pl-80 {
2831− padding-left: 80rem; }
2832− .sm-px-80 {
2833− padding-right: 80rem;
2834− padding-left: 80rem; }
2835− .sm-py-80 {
2836− padding-top: 80rem;
2837− padding-bottom: 80rem; }
2838− .sm-m-81 {
2839− margin: 81rem; }
2840− .sm-mt-81 {
2841− margin-top: 81rem; }
2842− .sm-mb-81 {
2843− margin-bottom: 81rem; }
2844− .sm-mr-81 {
2845− margin-right: 81rem; }
2846− .sm-ml-81 {
2847− margin-left: 81rem; }
2848− .sm-mx-81 {
2849− margin-right: 81rem;
2850− margin-left: 81rem; }
2851− .sm-my-81 {
2852− margin-top: 81rem;
2853− margin-bottom: 81rem; }
2854− .sm-p-81 {
2855− padding: 81rem; }
2856− .sm-pt-81 {
2857− padding-top: 81rem; }
2858− .sm-pb-81 {
2859− padding-bottom: 81rem; }
2860− .sm-pr-81 {
2861− padding-right: 81rem; }
2862− .sm-pl-81 {
2863− padding-left: 81rem; }
2864− .sm-px-81 {
2865− padding-right: 81rem;
2866− padding-left: 81rem; }
2867− .sm-py-81 {
2868− padding-top: 81rem;
2869− padding-bottom: 81rem; }
2870− .sm-m-82 {
2871− margin: 82rem; }
2872− .sm-mt-82 {
2873− margin-top: 82rem; }
2874− .sm-mb-82 {
2875− margin-bottom: 82rem; }
2876− .sm-mr-82 {
2877− margin-right: 82rem; }
2878− .sm-ml-82 {
2879− margin-left: 82rem; }
2880− .sm-mx-82 {
2881− margin-right: 82rem;
2882− margin-left: 82rem; }
2883− .sm-my-82 {
2884− margin-top: 82rem;
2885− margin-bottom: 82rem; }
2886− .sm-p-82 {
2887− padding: 82rem; }
2888− .sm-pt-82 {
2889− padding-top: 82rem; }
2890− .sm-pb-82 {
2891− padding-bottom: 82rem; }
2892− .sm-pr-82 {
2893− padding-right: 82rem; }
2894− .sm-pl-82 {
2895− padding-left: 82rem; }
2896− .sm-px-82 {
2897− padding-right: 82rem;
2898− padding-left: 82rem; }
2899− .sm-py-82 {
2900− padding-top: 82rem;
2901− padding-bottom: 82rem; }
2902− .sm-m-83 {
2903− margin: 83rem; }
2904− .sm-mt-83 {
2905− margin-top: 83rem; }
2906− .sm-mb-83 {
2907− margin-bottom: 83rem; }
2908− .sm-mr-83 {
2909− margin-right: 83rem; }
2910− .sm-ml-83 {
2911− margin-left: 83rem; }
2912− .sm-mx-83 {
2913− margin-right: 83rem;
2914− margin-left: 83rem; }
2915− .sm-my-83 {
2916− margin-top: 83rem;
2917− margin-bottom: 83rem; }
2918− .sm-p-83 {
2919− padding: 83rem; }
2920− .sm-pt-83 {
2921− padding-top: 83rem; }
2922− .sm-pb-83 {
2923− padding-bottom: 83rem; }
2924− .sm-pr-83 {
2925− padding-right: 83rem; }
2926− .sm-pl-83 {
2927− padding-left: 83rem; }
2928− .sm-px-83 {
2929− padding-right: 83rem;
2930− padding-left: 83rem; }
2931− .sm-py-83 {
2932− padding-top: 83rem;
2933− padding-bottom: 83rem; }
2934− .sm-m-84 {
2935− margin: 84rem; }
2936− .sm-mt-84 {
2937− margin-top: 84rem; }
2938− .sm-mb-84 {
2939− margin-bottom: 84rem; }
2940− .sm-mr-84 {
2941− margin-right: 84rem; }
2942− .sm-ml-84 {
2943− margin-left: 84rem; }
2944− .sm-mx-84 {
2945− margin-right: 84rem;
2946− margin-left: 84rem; }
2947− .sm-my-84 {
2948− margin-top: 84rem;
2949− margin-bottom: 84rem; }
2950− .sm-p-84 {
2951− padding: 84rem; }
2952− .sm-pt-84 {
2953− padding-top: 84rem; }
2954− .sm-pb-84 {
2955− padding-bottom: 84rem; }
2956− .sm-pr-84 {
2957− padding-right: 84rem; }
2958− .sm-pl-84 {
2959− padding-left: 84rem; }
2960− .sm-px-84 {
2961− padding-right: 84rem;
2962− padding-left: 84rem; }
2963− .sm-py-84 {
2964− padding-top: 84rem;
2965− padding-bottom: 84rem; }
2966− .sm-m-85 {
2967− margin: 85rem; }
2968− .sm-mt-85 {
2969− margin-top: 85rem; }
2970− .sm-mb-85 {
2971− margin-bottom: 85rem; }
2972− .sm-mr-85 {
2973− margin-right: 85rem; }
2974− .sm-ml-85 {
2975− margin-left: 85rem; }
2976− .sm-mx-85 {
2977− margin-right: 85rem;
2978− margin-left: 85rem; }
2979− .sm-my-85 {
2980− margin-top: 85rem;
2981− margin-bottom: 85rem; }
2982− .sm-p-85 {
2983− padding: 85rem; }
2984− .sm-pt-85 {
2985− padding-top: 85rem; }
2986− .sm-pb-85 {
2987− padding-bottom: 85rem; }
2988− .sm-pr-85 {
2989− padding-right: 85rem; }
2990− .sm-pl-85 {
2991− padding-left: 85rem; }
2992− .sm-px-85 {
2993− padding-right: 85rem;
2994− padding-left: 85rem; }
2995− .sm-py-85 {
2996− padding-top: 85rem;
2997− padding-bottom: 85rem; }
2998− .sm-m-86 {
2999− margin: 86rem; }
3000− .sm-mt-86 {
3001− margin-top: 86rem; }
3002− .sm-mb-86 {
3003− margin-bottom: 86rem; }
3004− .sm-mr-86 {
3005− margin-right: 86rem; }
3006− .sm-ml-86 {
3007− margin-left: 86rem; }
3008− .sm-mx-86 {
3009− margin-right: 86rem;
3010− margin-left: 86rem; }
3011− .sm-my-86 {
3012− margin-top: 86rem;
3013− margin-bottom: 86rem; }
3014− .sm-p-86 {
3015− padding: 86rem; }
3016− .sm-pt-86 {
3017− padding-top: 86rem; }
3018− .sm-pb-86 {
3019− padding-bottom: 86rem; }
3020− .sm-pr-86 {
3021− padding-right: 86rem; }
3022− .sm-pl-86 {
3023− padding-left: 86rem; }
3024− .sm-px-86 {
3025− padding-right: 86rem;
3026− padding-left: 86rem; }
3027− .sm-py-86 {
3028− padding-top: 86rem;
3029− padding-bottom: 86rem; }
3030− .sm-m-87 {
3031− margin: 87rem; }
3032− .sm-mt-87 {
3033− margin-top: 87rem; }
3034− .sm-mb-87 {
3035− margin-bottom: 87rem; }
3036− .sm-mr-87 {
3037− margin-right: 87rem; }
3038− .sm-ml-87 {
3039− margin-left: 87rem; }
3040− .sm-mx-87 {
3041− margin-right: 87rem;
3042− margin-left: 87rem; }
3043− .sm-my-87 {
3044− margin-top: 87rem;
3045− margin-bottom: 87rem; }
3046− .sm-p-87 {
3047− padding: 87rem; }
3048− .sm-pt-87 {
3049− padding-top: 87rem; }
3050− .sm-pb-87 {
3051− padding-bottom: 87rem; }
3052− .sm-pr-87 {
3053− padding-right: 87rem; }
3054− .sm-pl-87 {
3055− padding-left: 87rem; }
3056− .sm-px-87 {
3057− padding-right: 87rem;
3058− padding-left: 87rem; }
3059− .sm-py-87 {
3060− padding-top: 87rem;
3061− padding-bottom: 87rem; }
3062− .sm-m-88 {
3063− margin: 88rem; }
3064− .sm-mt-88 {
3065− margin-top: 88rem; }
3066− .sm-mb-88 {
3067− margin-bottom: 88rem; }
3068− .sm-mr-88 {
3069− margin-right: 88rem; }
3070− .sm-ml-88 {
3071− margin-left: 88rem; }
3072− .sm-mx-88 {
3073− margin-right: 88rem;
3074− margin-left: 88rem; }
3075− .sm-my-88 {
3076− margin-top: 88rem;
3077− margin-bottom: 88rem; }
3078− .sm-p-88 {
3079− padding: 88rem; }
3080− .sm-pt-88 {
3081− padding-top: 88rem; }
3082− .sm-pb-88 {
3083− padding-bottom: 88rem; }
3084− .sm-pr-88 {
3085− padding-right: 88rem; }
3086− .sm-pl-88 {
3087− padding-left: 88rem; }
3088− .sm-px-88 {
3089− padding-right: 88rem;
3090− padding-left: 88rem; }
3091− .sm-py-88 {
3092− padding-top: 88rem;
3093− padding-bottom: 88rem; }
3094− .sm-m-89 {
3095− margin: 89rem; }
3096− .sm-mt-89 {
3097− margin-top: 89rem; }
3098− .sm-mb-89 {
3099− margin-bottom: 89rem; }
3100− .sm-mr-89 {
3101− margin-right: 89rem; }
3102− .sm-ml-89 {
3103− margin-left: 89rem; }
3104− .sm-mx-89 {
3105− margin-right: 89rem;
3106− margin-left: 89rem; }
3107− .sm-my-89 {
3108− margin-top: 89rem;
3109− margin-bottom: 89rem; }
3110− .sm-p-89 {
3111− padding: 89rem; }
3112− .sm-pt-89 {
3113− padding-top: 89rem; }
3114− .sm-pb-89 {
3115− padding-bottom: 89rem; }
3116− .sm-pr-89 {
3117− padding-right: 89rem; }
3118− .sm-pl-89 {
3119− padding-left: 89rem; }
3120− .sm-px-89 {
3121− padding-right: 89rem;
3122− padding-left: 89rem; }
3123− .sm-py-89 {
3124− padding-top: 89rem;
3125− padding-bottom: 89rem; }
3126− .sm-m-90 {
3127− margin: 90rem; }
3128− .sm-mt-90 {
3129− margin-top: 90rem; }
3130− .sm-mb-90 {
3131− margin-bottom: 90rem; }
3132− .sm-mr-90 {
3133− margin-right: 90rem; }
3134− .sm-ml-90 {
3135− margin-left: 90rem; }
3136− .sm-mx-90 {
3137− margin-right: 90rem;
3138− margin-left: 90rem; }
3139− .sm-my-90 {
3140− margin-top: 90rem;
3141− margin-bottom: 90rem; }
3142− .sm-p-90 {
3143− padding: 90rem; }
3144− .sm-pt-90 {
3145− padding-top: 90rem; }
3146− .sm-pb-90 {
3147− padding-bottom: 90rem; }
3148− .sm-pr-90 {
3149− padding-right: 90rem; }
3150− .sm-pl-90 {
3151− padding-left: 90rem; }
3152− .sm-px-90 {
3153− padding-right: 90rem;
3154− padding-left: 90rem; }
3155− .sm-py-90 {
3156− padding-top: 90rem;
3157− padding-bottom: 90rem; }
3158− .sm-m-91 {
3159− margin: 91rem; }
3160− .sm-mt-91 {
3161− margin-top: 91rem; }
3162− .sm-mb-91 {
3163− margin-bottom: 91rem; }
3164− .sm-mr-91 {
3165− margin-right: 91rem; }
3166− .sm-ml-91 {
3167− margin-left: 91rem; }
3168− .sm-mx-91 {
3169− margin-right: 91rem;
3170− margin-left: 91rem; }
3171− .sm-my-91 {
3172− margin-top: 91rem;
3173− margin-bottom: 91rem; }
3174− .sm-p-91 {
3175− padding: 91rem; }
3176− .sm-pt-91 {
3177− padding-top: 91rem; }
3178− .sm-pb-91 {
3179− padding-bottom: 91rem; }
3180− .sm-pr-91 {
3181− padding-right: 91rem; }
3182− .sm-pl-91 {
3183− padding-left: 91rem; }
3184− .sm-px-91 {
3185− padding-right: 91rem;
3186− padding-left: 91rem; }
3187− .sm-py-91 {
3188− padding-top: 91rem;
3189− padding-bottom: 91rem; }
3190− .sm-m-92 {
3191− margin: 92rem; }
3192− .sm-mt-92 {
3193− margin-top: 92rem; }
3194− .sm-mb-92 {
3195− margin-bottom: 92rem; }
3196− .sm-mr-92 {
3197− margin-right: 92rem; }
3198− .sm-ml-92 {
3199− margin-left: 92rem; }
3200− .sm-mx-92 {
3201− margin-right: 92rem;
3202− margin-left: 92rem; }
3203− .sm-my-92 {
3204− margin-top: 92rem;
3205− margin-bottom: 92rem; }
3206− .sm-p-92 {
3207− padding: 92rem; }
3208− .sm-pt-92 {
3209− padding-top: 92rem; }
3210− .sm-pb-92 {
3211− padding-bottom: 92rem; }
3212− .sm-pr-92 {
3213− padding-right: 92rem; }
3214− .sm-pl-92 {
3215− padding-left: 92rem; }
3216− .sm-px-92 {
3217− padding-right: 92rem;
3218− padding-left: 92rem; }
3219− .sm-py-92 {
3220− padding-top: 92rem;
3221− padding-bottom: 92rem; }
3222− .sm-m-93 {
3223− margin: 93rem; }
3224− .sm-mt-93 {
3225− margin-top: 93rem; }
3226− .sm-mb-93 {
3227− margin-bottom: 93rem; }
3228− .sm-mr-93 {
3229− margin-right: 93rem; }
3230− .sm-ml-93 {
3231− margin-left: 93rem; }
3232− .sm-mx-93 {
3233− margin-right: 93rem;
3234− margin-left: 93rem; }
3235− .sm-my-93 {
3236− margin-top: 93rem;
3237− margin-bottom: 93rem; }
3238− .sm-p-93 {
3239− padding: 93rem; }
3240− .sm-pt-93 {
3241− padding-top: 93rem; }
3242− .sm-pb-93 {
3243− padding-bottom: 93rem; }
3244− .sm-pr-93 {
3245− padding-right: 93rem; }
3246− .sm-pl-93 {
3247− padding-left: 93rem; }
3248− .sm-px-93 {
3249− padding-right: 93rem;
3250− padding-left: 93rem; }
3251− .sm-py-93 {
3252− padding-top: 93rem;
3253− padding-bottom: 93rem; }
3254− .sm-m-94 {
3255− margin: 94rem; }
3256− .sm-mt-94 {
3257− margin-top: 94rem; }
3258− .sm-mb-94 {
3259− margin-bottom: 94rem; }
3260− .sm-mr-94 {
3261− margin-right: 94rem; }
3262− .sm-ml-94 {
3263− margin-left: 94rem; }
3264− .sm-mx-94 {
3265− margin-right: 94rem;
3266− margin-left: 94rem; }
3267− .sm-my-94 {
3268− margin-top: 94rem;
3269− margin-bottom: 94rem; }
3270− .sm-p-94 {
3271− padding: 94rem; }
3272− .sm-pt-94 {
3273− padding-top: 94rem; }
3274− .sm-pb-94 {
3275− padding-bottom: 94rem; }
3276− .sm-pr-94 {
3277− padding-right: 94rem; }
3278− .sm-pl-94 {
3279− padding-left: 94rem; }
3280− .sm-px-94 {
3281− padding-right: 94rem;
3282− padding-left: 94rem; }
3283− .sm-py-94 {
3284− padding-top: 94rem;
3285− padding-bottom: 94rem; }
3286− .sm-m-95 {
3287− margin: 95rem; }
3288− .sm-mt-95 {
3289− margin-top: 95rem; }
3290− .sm-mb-95 {
3291− margin-bottom: 95rem; }
3292− .sm-mr-95 {
3293− margin-right: 95rem; }
3294− .sm-ml-95 {
3295− margin-left: 95rem; }
3296− .sm-mx-95 {
3297− margin-right: 95rem;
3298− margin-left: 95rem; }
3299− .sm-my-95 {
3300− margin-top: 95rem;
3301− margin-bottom: 95rem; }
3302− .sm-p-95 {
3303− padding: 95rem; }
3304− .sm-pt-95 {
3305− padding-top: 95rem; }
3306− .sm-pb-95 {
3307− padding-bottom: 95rem; }
3308− .sm-pr-95 {
3309− padding-right: 95rem; }
3310− .sm-pl-95 {
3311− padding-left: 95rem; }
3312− .sm-px-95 {
3313− padding-right: 95rem;
3314− padding-left: 95rem; }
3315− .sm-py-95 {
3316− padding-top: 95rem;
3317− padding-bottom: 95rem; }
3318− .sm-m-96 {
3319− margin: 96rem; }
3320− .sm-mt-96 {
3321− margin-top: 96rem; }
3322− .sm-mb-96 {
3323− margin-bottom: 96rem; }
3324− .sm-mr-96 {
3325− margin-right: 96rem; }
3326− .sm-ml-96 {
3327− margin-left: 96rem; }
3328− .sm-mx-96 {
3329− margin-right: 96rem;
3330− margin-left: 96rem; }
3331− .sm-my-96 {
3332− margin-top: 96rem;
3333− margin-bottom: 96rem; }
3334− .sm-p-96 {
3335− padding: 96rem; }
3336− .sm-pt-96 {
3337− padding-top: 96rem; }
3338− .sm-pb-96 {
3339− padding-bottom: 96rem; }
3340− .sm-pr-96 {
3341− padding-right: 96rem; }
3342− .sm-pl-96 {
3343− padding-left: 96rem; }
3344− .sm-px-96 {
3345− padding-right: 96rem;
3346− padding-left: 96rem; }
3347− .sm-py-96 {
3348− padding-top: 96rem;
3349− padding-bottom: 96rem; }
3350− .sm-m-97 {
3351− margin: 97rem; }
3352− .sm-mt-97 {
3353− margin-top: 97rem; }
3354− .sm-mb-97 {
3355− margin-bottom: 97rem; }
3356− .sm-mr-97 {
3357− margin-right: 97rem; }
3358− .sm-ml-97 {
3359− margin-left: 97rem; }
3360− .sm-mx-97 {
3361− margin-right: 97rem;
3362− margin-left: 97rem; }
3363− .sm-my-97 {
3364− margin-top: 97rem;
3365− margin-bottom: 97rem; }
3366− .sm-p-97 {
3367− padding: 97rem; }
3368− .sm-pt-97 {
3369− padding-top: 97rem; }
3370− .sm-pb-97 {
3371− padding-bottom: 97rem; }
3372− .sm-pr-97 {
3373− padding-right: 97rem; }
3374− .sm-pl-97 {
3375− padding-left: 97rem; }
3376− .sm-px-97 {
3377− padding-right: 97rem;
3378− padding-left: 97rem; }
3379− .sm-py-97 {
3380− padding-top: 97rem;
3381− padding-bottom: 97rem; }
3382− .sm-m-98 {
3383− margin: 98rem; }
3384− .sm-mt-98 {
3385− margin-top: 98rem; }
3386− .sm-mb-98 {
3387− margin-bottom: 98rem; }
3388− .sm-mr-98 {
3389− margin-right: 98rem; }
3390− .sm-ml-98 {
3391− margin-left: 98rem; }
3392− .sm-mx-98 {
3393− margin-right: 98rem;
3394− margin-left: 98rem; }
3395− .sm-my-98 {
3396− margin-top: 98rem;
3397− margin-bottom: 98rem; }
3398− .sm-p-98 {
3399− padding: 98rem; }
3400− .sm-pt-98 {
3401− padding-top: 98rem; }
3402− .sm-pb-98 {
3403− padding-bottom: 98rem; }
3404− .sm-pr-98 {
3405− padding-right: 98rem; }
3406− .sm-pl-98 {
3407− padding-left: 98rem; }
3408− .sm-px-98 {
3409− padding-right: 98rem;
3410− padding-left: 98rem; }
3411− .sm-py-98 {
3412− padding-top: 98rem;
3413− padding-bottom: 98rem; }
3414− .sm-m-99 {
3415− margin: 99rem; }
3416− .sm-mt-99 {
3417− margin-top: 99rem; }
3418− .sm-mb-99 {
3419− margin-bottom: 99rem; }
3420− .sm-mr-99 {
3421− margin-right: 99rem; }
3422− .sm-ml-99 {
3423− margin-left: 99rem; }
3424− .sm-mx-99 {
3425− margin-right: 99rem;
3426− margin-left: 99rem; }
3427− .sm-my-99 {
3428− margin-top: 99rem;
3429− margin-bottom: 99rem; }
3430− .sm-p-99 {
3431− padding: 99rem; }
3432− .sm-pt-99 {
3433− padding-top: 99rem; }
3434− .sm-pb-99 {
3435− padding-bottom: 99rem; }
3436− .sm-pr-99 {
3437− padding-right: 99rem; }
3438− .sm-pl-99 {
3439− padding-left: 99rem; }
3440− .sm-px-99 {
3441− padding-right: 99rem;
3442− padding-left: 99rem; }
3443− .sm-py-99 {
3444− padding-top: 99rem;
3445− padding-bottom: 99rem; } }
3446−
3447−/*Responsive Typography */
3448−/** Responsive for Mobile **/
3449−@media only screen and (max-width: 480px) {
3450− /*Container*/
3451− .container {
3452− padding-left: 4rem;
3453− padding-right: 4rem; }
3454− .container-img{
3455− margin: 0;
3456− padding:0;
3457− }
3458− /*Network Diagram Crop*/
3459− .overflow-hidden > img {
3460− padding:0;
3461− margin-left: -50rem; }
3462− /*Team images*/
3463− .team img {
3464− height: 150px;
3465− width: 150px; }
3466− /*Type Scale*/
3467− .sm-h1 {
3468− font-size: 12rem;
3469− font-weight: 600;
3470− line-height: 16rem;
3471− margin: 4rem 0; }
3472− .sm-h2 {
3473− font-size: 9rem;
3474− font-weight: 600;
3475− line-height: 13rem;
3476− margin: 3rem 0; }
3477− .sm-h3 {
3478− font-size: 6rem;
3479− font-weight: 600;
3480− line-height: 8rem;
3481− margin: 2rem 0; }
3482− .sm-h4 {
3483− font-size: 5rem;
3484− font-weight: 600;
3485− line-height: 7rem;
3486− margin: 1rem 0; }
3487− .sm-h5 {
3488− font-size: 5rem;
3489− font-weight: 500;
3490− line-height: 7rem;
3491− margin: 1rem 0; }
3492− /*Text Align*/
3493− .sm-center {
3494− text-align: center; }
3495− /*Grid Reverse*/
3496− .sm-wrap-reverse {
3497− flex-wrap: wrap-reverse; }
3498− /* Hide*/
3499− .sm-hide {
3500− display: none; } }
3501−
3502−/* End of Mobile Styles*/
3503−@media only screen and (min-width: 480px) {
3504− .md-hide {
3505− display: none; } }
3506−
3507−/* Video Container Fix*/
3508−.video-container {
3509− position: relative;
3510− padding-bottom: 56.25%;
3511− /* 16:9 */
3512− height: 0; }
3513−
3514−.video-container iframe {
3515− position: absolute;
3516− top: 0;
3517− left: 0;
3518− width: 100%;
3519− height: 100%; }
3520−
3521−/*Display*/
3522−.inline-block {
3523− display: inline-block; }
3524−
3525−/*Typography */
3526−.underline--skip {
3527− text-decoration-skip: ink; }
3528−
3529−.p--intro p {
3530− font-size: 5rem;
3531− font-weight: 500;
3532− line-height: 8rem; }
3533−
3534−/** font feature notational alternative **/
3535−.dlig {
3536− font-variant-ligatures: discretionary-ligatures; }
3537−
3538−/* Grid */
3539−/* Shapes */
3540−.square-green {
3541− background-color: #6FDC74;
3542− border-color: #6FDC74; }
3543−
3544−.square-green-light {
3545− background-color: #D2CCDB;
3546− border-color: #D2CCDB; }
3547−
3548−.square-orange {
3549− background-color: #FFC440;
3550− border-color: #FFC440; }
3551−
3552−.square-orange-dark {
3553− background-color: #E5BB67;
3554− border-color: #E5BB67; }
3555−
3556−.square-gray {
3557− background-color: #797384;
3558− border-color: #797384; }
3559−
3560−.square-blue {
3561− background-color: #4330FC;
3562− border-color: #4330FC; }
3563−
3564−.square-cyan {
3565− background-color: #96DAEA;
3566− border-color: #96DAEA; }
3567−
3568−.square-navy {
3569− background-color: #10008B;
3570− border-color: #10008B; }
3571−
3572−.square-purple {
3573− background-color: #7272ED;
3574− border-color: #7272ED; }
dist/css/typography.cssdeleted−106
@@ -1,106 +0,0 @@
1−/*
2−TYPOGRAPHY from address collection
3−*/
4−
5−@import url('https://rsms.me/inter/inter-ui.css');
6−html { font-family: 'Inter UI', sans-serif; }
7−@supports (font-variation-settings: normal) {
8− html { font-family: 'Inter UI var alt', sans-serif; }
9−}
10−
11−h1, .h1{
12− font-size: 6rem;
13− line-height: 8rem;
14− margin-top: 0;
15− margin-bottom: 0;
16− color: inherit;
17−}
18−.h1-large{
19− font-size: 8rem;
20− line-height: 12rem;
21−}
22−
23−h2, .h2{
24− font-size: 5rem;
25− font-weight: 500;
26− line-height: 6rem;
27− color: inherit;
28−}
29−
30−h3, .h3 {
31− font-size: 4rem;
32− font-weight: 500;
33− line-height: 5rem;
34− color: inherit;
35−}
36−
37−h4, .h4 {
38− font-size: 3.5rem;
39− font-weight: 500;
40− line-height: 4rem;
41− color: inherit;
42−}
43−body ,p , .p{
44− font-family: 'Inter UI', -apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
45− font-weight: 400;
46− font-size: 4rem;
47− line-height: 8rem;
48− color: inherit;
49−}
50−
51−a {
52− color: inherit;
53−}
54−
55−.posts h1, .posts .h1{
56− margin-bottom: 8rem;
57−}
58−
59−.post h1, .docs h1{
60− font-size: 6rem;
61− line-height: 8rem;
62− margin-top: 0;
63− margin-bottom: 8rem;
64−}
65−.post h2, .docs h2{
66− font-size: 5rem;
67− font-weight: 500;
68− line-height: 6rem;
69− margin-top: 16rem;
70− margin-bottom: 4rem;
71−}
72−
73−.post h3, .docs h3{
74− font-size: 4rem;
75− font-weight: 500;
76− line-height: 5rem;
77− margin-top: 8rem;
78− margin-bottom: 4rem;
79−}
80−
81−.post h4, .docs h4{
82− margin-bottom: 4rem;
83−}
84−.post p, .docs p{
85− font-family: 'Inter UI',-apple-system, BlinkMacSystemFont, Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
86− font-size: 4rem;
87− line-height: 8rem;
88− margin-top: 0;
89− margin-bottom: 4rem;
90−}
91−
92−.post ul, .docs ul{
93− margin-top: 0;
94− margin-bottom: 4rem;
95−}
96−
97−.post li p, .docs li p{
98− margin-bottom: 2rem;
99− display: inline;
100−}
101−
102−.post img, .docs img {
103− width: 100%;
104− margin-top: 4rem;
105− margin-bottom: 4rem;
106−}
dist/css/visibility.cssdeleted−11
@@ -1,11 +0,0 @@
1−.overflow-hidden{
2− overflow: hidden;
3−}
4−.overflow-y {
5− overflow-y: scroll;
6−}
7−
8−
9−.zn1{
10− z-index: -1;
11−}
dist/docs.udondeleted−13
@@ -1,13 +0,0 @@
1−:- :~ navhome/'/docs/'
2− navuptwo/'true'
3− next/'true'
4− sort/'1'
5− title/'Technical overview'
6− ==
7−;>
8−
9−# Docs
10−
11−Welcome to the documentation for the Urbit project, including the Azimuth identity layer, the Arvo operating system, and the Hoon programming language. This documentation is maintained by [Tlon](https://tlon.io) in a public [Github repository](https://github.com/urbit/docs). Issues and contributions are welcome.
12−
13−Please make your way to the [Introduction](docs/introduction) for an overview of the docs.
dist/docs/getting-started/azimuth/index.htmldeleted−2
@@ -1,2 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="using-bridge-">Using Bridge </h1><p><a href="https://github.com/urbit/bridge">Bridge</a> is the client we built for interacting with <a href="/docs/pki">Azimuth</a>, the Urbit PKI, and managing your Azimuth identities, called <i>points</i>. Importantly, Bridge also allows you to generate a keyfile that you will need to boot your ship so that it can use the Arvo network. </p><p>This guide assumes that you own an Azimuth point, or that you have found someone to send an Azimuth point to your Ethereum address and are looking to claim it. </p><p>To install Bridge, navigate to the <a href="https://github.com/urbit/bridge/releases/">release page</a> on GitHub. Download the <code>.zip</code> file at of the latest version. After you download it, follow the instructions below. </p><h2 id="installation-">Installation </h2><p>To use Bridge: </p><ol><li><p>Unzip the <code>.zip</code> file that you downloaded (<code>bridge-$version.zip</code>). </p></li><li><p>Open up your command line interface (Terminal on OSX, Command Prompt on Windows). </p></li><li><p>Navigate to the <code>bridge-$version</code> directory, where <code>$version</code> is the appropriate version number. </p></li><li><p>Run this command: <code>python3 -m http.server 5000 --bind 127.0.0.1 --directory build</code> </p></li><li><p>You can then use the Bridge app by navigating to <code>http://localhost:5000</code> in your internet browser. </p></li></ol><p><b>Note:</b> Bridge allows you both make reads and writes to the Ethereum blockchain. Writing to the blockchain, such as changing your networking keys, will incur a transaction cost that will require you to have some ETH in your address. </p><p>Once the program is running in your browser, go through each step presented according to what kind of wallet you have. </p><h2 id="accept-your-transfer-">Accept Your Transfer </h2><p>After you access your Ethereum address, if a point was sent to that address, you&#39;ll come to a page that has an <code>Incoming Transfers</code> header, under which is a graphic. Click the <code>Details -&gt;</code> link under that graphic. </p><p>Now you&#39;ll be on the management page of your point. The transfer isn&#39;t completed yet, so click <code>Accept incoming transfer</code>. Then check both boxes and and click their associated <code>Sign Transaction</code> and <code>Send Transaction</code> buttons. </p><p>If you already own a point, then click on the <code>Details -&gt;</code> under your sigil in the <code>Your Points</code> section. </p><h2 id="set-your-networking-keys-">Set Your Networking Keys </h2><p>If you just accepted a point, you&#39;ll be returned to your point screen. Notice that that links and buttons are now clickable. You now own this point! </p><p>Click the link that says <code>Set Urbit networking keys</code>. The field that is presented in the resulting page expects a 32-byte hexadecimal string. If it&#39;s filled already, no action is required. If this is empty, you will need to generate such a string. You can generate this data any way you please, but in the terminal on MacOS or Linux, you can write </p><pre>hexdump -n 32 -e &#39;4/4 &quot;%08X&quot;&#39; /dev/random
2−</pre><p>and use the result. </p><p>It should be noted that setting your network keys is an event on the Ethereum network, and will therefore cost a trivial, but non-zero, amount of <a href="https://github.com/ethereum/wiki/wiki/Design-Rationale#gas-and-fees">gas</a> to complete. </p><h2 id="generate-your-keyfile-">Generate Your Keyfile </h2><p>From the detail page associated with your point, click the <code>Generate Arvo Keyfile</code> link and you&#39;ll be taken to a page with a field titled <code>Network seed</code>. This field should already be filled in, and should match the hexadecimal string that you entered in the previous step. If its not filled in or does not match, fill it in with the correct string. </p><p>Click <code>Generate -&gt;</code>, which will download a keyfile onto your machine. </p><p>With that keyfile in hand, you can now exit Bridge, and continue to the guide to <a href="../installing-urbit">installing Arvo</a>. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/getting-started/booting-a-ship/index.htmldeleted−10
@@ -1,10 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="booting-a-ship-">Booting a Ship </h1><p>Now the rubber meets the road. You&#39;ll be booting your ship with the keyfile that you <a href="../azimuth.udon">downloaded from Bridge</a>. </p><p>Note that this document is only for booting a ship that uses the live Arvo network. If you just want to create an unnetworked ship for development purposes, read <a href="../creating-a-development-ship">this guide</a> instead. </p><h2 id="step-1--find-your-point-s-name-">Step 1: Find Your Point&#39;s Name </h2><p>This will look something like <code>~lodleb-ritrul</code>. You can see the name of your point(s) when you log into your wallet using the Bridge client. </p><img src="http://media.urbit.org/site/bridge-0.png" width="100%" /><h2 id="step-2--find-the-path-to-your-keyfile-">Step 2: Find the path to your keyfile </h2><p>Find the absolute path to the keyfile that you downloaded from Bridge. Copy it. </p><h2 id="step-3--run-the-boot-command-">Step 3: Run the boot command </h2><p>Type <code>cd</code> in your terminal to return to your home directory. If you want to store your ship somewhere besides your home directory, change the terminal&#39;s working directory to the desired directory. </p><p>Run the command below, except with <code>~sample-planet</code> replaced by the name of your Urbit identity, and <code>path/to/my-planet.key</code> replaced with the path to your keyfile: </p><pre>urbit -w ~sample-planet -k path/to/my-planet.key
2−</pre><p>Or, if you&#39;d prefer to copy your key in, you can run: </p><pre>urbit -w ~sample-planet -G rAnDoMkEy
3−</pre><p>Either command will create a directory called <code>sample-planet/</code> and begin building your ship. It may take a few minutes. </p><p>When your ship is finished booting, you will see the <code>~sample-planet:dojo&gt;</code> prompt. At that point, you should permanently erase your keyfile from your machine. </p><h2 id="basic-operations-">Basic Operations </h2><p>Welcome to your ship! There&#39;s a few things you should do to become oriented. </p><h3 id="the-dojo-">The Dojo </h3><p>Let&#39;s try out the Dojo, the Arvo command line and Hoon REPL: </p><pre>~sample-planet:dojo&gt; (add 2 2)
4−</pre><p>Should produce: </p><pre>&gt; (add 2 2)
5−4
6−</pre><p>Good. </p><h3 id="mounting-">Mounting </h3><p>Your ship&#39;s filesystem being “mounted” means that its filesystem can be interacted with through Unix. This makes things much easier for you. </p><p>The Arvo filesystem isn&#39;t mounted to Unix by default. Switch to the Dojo prompt and run: </p><pre>~sample-planet:dojo&gt; |mount %
7−</pre><p>This should produce: </p><pre>&gt; |mount %
8−&gt;=
9−</pre><p>which indicates that the command was processed. </p><p><code>|mount %</code> will cause a <code>home/</code> directory to appear inside your <i>pier</i> folder in Unix (the “pier” is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship. </p><h3 id="shutting-down-and-restarting-">Shutting Down and Restarting </h3><p>You can toggle between the Dojo and Talk (chat) prompts with <code>ctrl-x</code>. You can turn your ship off with <code>ctrl-d</code> from the Talk or Dojo prompts. </p><p>To restart your ship, simply pass the name of your pier: </p><pre>urbit some-planet
10−</pre></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/getting-started/creating-a-development-ship/index.htmldeleted−9
@@ -1,9 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="creating-a-development-ship-">Creating a Development Ship </h1><p>To do work with Hoon and with the system, we recommended using a “fake” ship -- one not connected to the network. </p><p>Because such a ship has no presence on the network, you don&#39;t need an Azimuth identity for its purposes. You just need to have <a href="../installing-urbit">installed our software</a>. </p><p>To create a fake ship named <code>~zod</code>, run the command below. You can replace <code>zod</code> with any valid Urbit ship-name. </p><pre>urbit -F zod
2−</pre><p>Now you should see a block of boot messages, starting with the Urbit version number. Welcome! </p><h2 id="basic-operations-">Basic Operations </h2><p>Welcome to your ship! There&#39;s a few things you should do to become oriented. </p><h3 id="the-dojo-">The Dojo </h3><p>Let&#39;s try out the Dojo, the Arvo command line and Hoon REPL: </p><pre>~sample-planet:dojo&gt; (add 2 2)
3−</pre><p>Should produce: </p><pre>&gt; (add 2 2)
4−4
5−</pre><p>Good. </p><h3 id="mounting-">Mounting </h3><p>Your ship&#39;s filesystem being “mounted” means that its filesystem can be interacted with through Unix. This makes things much easier for you. </p><p>The Arvo filesystem isn&#39;t mounted to Unix by default. Switch to the Dojo prompt and run: </p><pre>~sample-planet:dojo&gt; |mount %
6−</pre><p>This should produce: </p><pre>&gt; |mount %
7−&gt;=
8−</pre><p>which indicates that the command was processed. </p><p><code>|mount %</code> will cause a <code>home/</code> directory to appear inside your <i>pier</i> folder in Unix (the “pier” is our shorthand for the directory whose name corresponds to your Azimuth point). Changes to these files are automatically synced into your ship. </p><h3 id="shutting-down-and-restarting-">Shutting Down and Restarting </h3><p>You can turn your ship off with <code>ctrl-d</code> from the Talk or Dojo prompts. </p><p>To restart your ship, simply pass the name of your pier: </p><pre>urbit some-planet
9−</pre></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/getting-started/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="getting-started-">Getting Started </h1><p>Pages in this section are guides to getting you started with Urbit. </p><p>But first, the absolute basics. Arvo is the name of the Urbit operating system and the name of network. Azimuth is the name of the Urbit identity layer. Urbit is the project as the whole. </p><p>An instance of the Arvo operating system is called a <i>ship</i>. If you want to get on the Arvo network, you need an Azimuth identity, called a <i>point</i>. </p><h2 id="urbit-identities-">Urbit Identities </h2><p>An Azimuth point functions as an identity and a network address for Arvo. A ship can&#39;t use the Arvo network unless it&#39;s been booted with the keys registered to a point. </p><p>Points are generally not freely available, so you will need to either purchase one or get one from a friend. To receive one, you will need an Ethereum wallet that supports the BIP39 mnemonic seed functionality, which allows you to access your wallet with a series of dictionary words. Hardware wallets, such as Ledger and TREZOR devices, satisfy this requirement. So do various web-based wallets. </p><p>Once you have such a wallet, give your Ethereum address to the person who agreed to give you a point. Have them transfer the point to your address, and continue to the with our guides below. </p><h2 id="guides-">Guides </h2><p>Follow these guides in the order that they are listed. </p><h3 id="using-bridge-"><a href="azimuth">Using Bridge</a> </h3><p>Bridge is our client for managing Azimuth points. This guide will tell you how to use it to get your point&#39;s <i>keyfile</i>, the item you need to boot your ship booted onto the Arvo network. </p><h3 id="installing-urbit-"><a href="installing-urbit">Installing Urbit</a> </h3><p>This guide will tell you everything you need to know about installing our software. </p><h3 id="booting-a-ship-"><a href="booting-a-ship">Booting a Ship</a> </h3><p>This guide will walk you through the process of getting your ship operational and on the Arvo network. </p><h3 id="creating-a-development-ship-"><a href="creating-a-development-ship">Creating a Development Ship</a> </h3><p>If you just want to do development work with Arvo, and don&#39;t need to be on the Urbit network, this section is for you. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/getting-started/installing-urbit/index.htmldeleted−118
@@ -1,118 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="installing-urbit-">Installing Urbit </h1><p>Arvo runs nicely on a Unix-like operating system -- Ubuntu, Fedora, macOS, and FreeBSD, for example. If you&#39;re using Windows, you&#39;ll need to get one of the aforementioned systems. Don&#39;t worry: most of them are free. Let&#39;s get it onto your machine. </p><p>But first, some terminology: </p><ul><li><p><code>vere</code> or <code>urbit</code>: the interpreter that runs when you run a command like <code>urbit</code> or <code>/bin/urbit</code> in your command line </p></li><li><p><code>arvo</code>: the deterministic OS that lives in a directory whose name matches your Azimuth point, ie <code>~famreb-todmec</code> lives in <code>/famreb-todmec</code> </p></li></ul><p>We have different installation instructions for different platforms. To install and run Arvo, run the commands that are listed for your operating system. </p><p>On any platform, you can check your Arvo installation by running the <code>urbit</code> command. Installation was successful if you get a block of output that begins with the line below: </p><pre>Urbit: a personal server operating function
2−</pre><h2 id="instructions-">Instructions </h2><h3 id="macos-">MacOS </h3><p>We recommend using the Homebrew package manager to run Arvo on MacOS. </p><pre># Bash
3−
4−brew update
5−brew install gcc git gmp libsigsegv libtool meson ninja pkg-config python2 openssl
6−git clone https://github.com/urbit/urbit
7−cd urbit
8−./scripts/bootstrap
9−./scripts/build
10−sudo ninja -C ./build/ meson-install
11−urbit
12−</pre><h3 id="ubuntu-or-debian-">Ubuntu or Debian </h3><pre># Bash
13−
14−sudo apt-get update
15−sudo apt-get install g++ git libcurl4-gnutls-dev libgmp3-dev libncurses5-dev libsigsegv-dev libssl-dev make openssl pkg-config python python3 python3-pip zlib1g-dev ninja-build
16−sudo -H pip3 install --upgrade pip
17−sudo -H pip3 install meson
18−
19−git clone https://github.com/urbit/urbit
20−cd urbit
21−./scripts/bootstrap
22−./scripts/build
23−sudo ninja -C ./build/ install
24−urbit
25−</pre><h3 id="fedora-">Fedora </h3><pre># Bash
26−
27−sudo yum upgrade
28−sudo yum install autoconf automake cmake ctags gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel libtool ncurses-devel ninja-build openssl openssl-devel pkgconfig python2 python3 ragel re2c wget
29−
30−# meson requires python 3.5; RHEL supplies wrong version
31−pushd /usr/src
32− sudo wget https://www.python.org/ftp/python/3.5.5/Python-3.5.5.tgz
33− sudo tar xzf Python-3.5.5.tgz
34− cd Python-3.5.5
35− sudo ./configure --enable--optimizations
36− sudo make altinstall
37− which python3.5
38− cd /usr/local/bin
39− sudo ln -s python3.5 python3
40− hash python3
41−popd
42−
43−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
44−sudo /usr/local/bin/python3 get-pip.py
45−# downgrade meson to avoid dependencies that redhat can&#39;t meet
46−sudo -H /usr/local/bin/pip3 install meson
47−
48−
49−git clone git://github.com/ninja-build/ninja.git &amp;&amp; cd ninja
50−git checkout release
51−./configure.py --boostrap
52−sudo cp ./ninja /usr/local/bin
53−
54−git clone https://github.com/urbit/urbit
55−cd urbit
56−./scripts/bootstrap
57−./scripts/build
58−sudo /usr/local/bin/ninja -C ./build/ install
59−urbit
60−</pre><h3 id="arch-linux-">Arch Linux </h3><pre># Bash
61−
62−sudo pacman -Syyu
63−sudo pacman -S --needed curl gcc git gmp libsigsegv ncurses ninja openssl python python-pip meson
64−git clone https://github.com/urbit/urbit
65−cd urbit
66−./scripts/bootstrap
67−./scripts/build
68−cd build
69−ninja
70−sudo ninja meson-install
71−urbit
72−</pre><h3 id="freebsd-">FreeBSD </h3><pre># Bash or Sh
73−
74−pkg upgrade
75−sudo pkg install curl gcc git gmake gmp libsigsegv python python3 ncurses openssl gmp
76−curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
77−sudo python3 get-pip.py
78−sudo -H pip install --upgrade pip
79−sudo -H pip install meson
80−sudo pkg install ninja
81−git clone https://github.com/urbit/urbit
82−cd urbit
83−sh ./scripts/bootstrap
84−sh ./scripts/build
85−sudo ninja -C ./build/ meson-install
86−urbit
87−</pre><h3 id="amazon-web-services-">Amazon Web Services </h3><pre># Bash
88−
89−sudo yum update
90−sudo yum install gcc gcc-c++ git gmp-devel libcurl-devel libsigsegv-devel ncurses-devel openssl openssl-devel pkgconfig python2 python3 python3-pip wget git
91−sudo env &quot;PATH=$PATH&quot; pip3 install --upgrade pip
92−sudo env &quot;PATH=$PATH&quot; pip3 install meson
93−
94−
95−# we need libsigsegv
96−#
97−
98−wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-2.10-10.fc24.x86_64.rpm
99−wget http://dl.fedoraproject.org/pub/fedora/linux/releases/25/Everything/x86_64/os/Packages/l/libsigsegv-devel-2.10-10.fc24.x86_64.rpm
100−sudo yum localinstall libsigsegv-2.10-10.fc24.x86_64.rpm
101−sudo yum localinstall libsigsegv-devel-2.10-10.fc24.x86_64.rpm
102−
103−git clone git://github.com/ninja-build/ninja.git
104−pushd ninja
105− git checkout release
106− ./configure.py --bootstrap
107− sudo cp ./ninja /usr/local/bin
108−popd
109−
110−
111−git clone https://github.com/urbit/urbit
112−cd urbit
113−./scripts/bootstrap
114−./scripts/build
115−sudo env &quot;PATH=$PATH&quot; ninja -C ./build/ install
116−
117−urbit
118−</pre><h2 id="booting-a-ship-">Booting a Ship </h2><p>One you&#39;ve completed your installation, you can continue on to the instructions for <a href="../booting-a-ship">booting your ship</a> to get on the Arvo network. </p><p>Or, if you want to try testing and writing code, check out the guide to <a href="../creating-a-development-ship">getting an unnetworked development ship</a>. </p><h2><div id="swap">Set Up Swap</div></h2><p>If you&#39;re running Urbit in the cloud on a small instance, you may need to additionally configure swap space. If you&#39;re not, you can safely ignore this section. </p><p>Urbit wants to map 2GB of memory when it boots up. We won’t necessarily use all this memory, we just want to see it. On a normal modern PC or Mac, or on a large cloud virtual machine, this is not an issue. On some small cloud virtual machines (Amazon or Digital Ocean), the default memory configuration is smaller than this, and you need to manually configure a swapfile. </p><p>Digital Ocean has a post on adding swap <a href="https://www.digitalocean.com/community/tutorials/how-to-add-swap-space-on-ubuntu-16-04">here</a>. For Amazon there’s a StackOverflow thread <a href="https://stackoverflow.com/questions/17173972/how-do-you-add-swap-to-an-ec2-instance">here</a>. </p><p>Don’t spend a lot of time tweaking these settings; the simplest thing is fine. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/getting-started/operating-a-star/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="operating-a-star-">Operating a Star </h1><p>A <i>ship</i> is an instance of the Arvo operating system that is used as a personal server on the Arvo network. Stars are a type of ship that act as infrastructure for the Arvo network. In the Arvo ship-hierarchy, stars are below galaxies and above planets. </p><p>Parallel to the Arvo network is Azimuth, the Urbit identity system that uses the Ethereum blockchain. All ships must boot with a corresponding <i>point</i> -- an Azimuth identity -- to use the Arvo network. </p><p>Important star operations happen on both the Arvo side and the Azimuth side. On the Arvo side, these operations come in the form of Dojo commands. On the Azimuth side, operations happen by making changes to smart-contracts on the blockchain via a point. </p><h2 id="powers-of-a-star-">Powers of a Star </h2><p>Stars are above planets in the network hierarchy in the sense that each star sponsors some number of planets: stars discover peers for planets, route packets for planets, provide DNS routing for planets, and push software updates to planets. A star that fulfills this is called the <b>sponsor</b> of planets that receive such services from the star; those planets, in turn, are called <b>dependents</b> of that star. </p><p>Stars are also the “parents” planets. A new planet comes into existence only when spawned by a parent star. A parent planet is the sponsor of its children planets by default. This can change if a planet chooses to find a new sponsor (see the “Escaping a Sponsor” section below). </p><p>Planets must have a sponsor star to use most features of the Arvo network. A planet cannot boot without a sponsor, and cannot make new connections to peers as long as it is not connected to a sponsor. Sponsorless planets will still be able to message discovered peers until any such peers change their IP addresses. </p><h2 id="responsibilities-">Responsibilities </h2><p>Like with real-life infrastructure, the operation of Arvo infrastructure comes with unique responsibilities. For reasons stated above, stars should be always be online on a reliable cloud service, such as Amazon Web Services or Google Cloud Platform. These systems have layers of redundancies that make them much more resilient than local machines, so stars hosted on the cloud are unlikely to leave their dependents in the dark. </p><h2 id="operations-">Operations </h2><p>Below are some handy operations for the use and maintenance of your star. </p><h3 id="dns-proxying-">DNS Proxying </h3><p>You star is not aware of its own IP address by default. This means its dependent planets won&#39;t get DNS routing. </p><p>To provide DNS routing to your star&#39;s dependents, you need to set your star&#39;s IP address. </p><ol><li><p>Wait for the initial post-boot sync to succeed. </p></li><li><p>Enter <code>:dns|ip</code> into the Dojo. </p></li><li><p>The dojo will prompt you to enter something. Enter your IP address here. </p></li></ol><h3 id="maintaining-connectivity-">Maintaining Connectivity </h3><p>Occasionally, your star might lose network connectivity due to a known timer issue. When this happens, enter the <code>|bonk</code> command in the Dojo to reset the timer and restore connectivity. </p><h3 id="escaping-a-sponsor-">Escaping a Sponsor </h3><p>Planets are, of course, able to change sponsors. To do this, they must request that a different star takes them on as a dependent and that star must accept the request. Planets cannot emancipate themselves from a sponsor without having a new sponsor lined up. </p><p>All of these actions happen on Azimuth. There will be Bridge functionality to handle these actions in the future, but for now users will need to interact directly with the contracts with MetaMask, through services such as <a href="https://etherscan.io/address/ecliptic.eth#writeContract">Etherscan.io</a>. A sketch of the process is listed below; for now, only the Ethereum-savvy should act on these steps. </p><ol><li><p>The planet calls the <code>escape</code> function in the Ecliptic contract and writes the resulting data to the blockchain. </p></li><li><p>If the chosen star wants to become the planet&#39;s sponsor, it calls the <code>adopt</code> function in the Ecliptic contract. </p></li><li><p>The Arvo network notices the change, and the operation is complete. </p></li></ol></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><h1 id="docs-">Docs </h1><p>Welcome to the documentation for the Urbit project, including the Azimuth identity layer, the Arvo operating system, and the Hoon programming language. This documentation is maintained by <a href="https://tlon.io">Tlon</a> in a public <a href="https://github.com/urbit/docs">Github repository</a>. Issues and contributions are welcome. </p><p>Please make your way to the <a href="docs/introduction">Introduction</a> for an overview of the docs. </p></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/arvo-vs-azimuth/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="arvo-vs--azimuth-">Arvo vs. Azimuth </h1><p>Urbit is a project, not a single computer system. It has three components: Arvo, the operating system; Azimuth, the identity system; and Aegean, the pattern for creating software experiences for individual Urbit communities. This document compares the first two. </p><p><a href="https://github.com/urbit/arvo"><b>Arvo</b></a> is an operating system that provides the software for a personal server. These personal servers together constitute the peer-to-peer Arvo network. To make this network work on the social level, Arvo is built to work with a system of scarce and immutable identities. </p><p><a href="https://github.com/urbit/azimuth"><b>Azimuth</b></a> is the public-key infrastructure built to be such a system. A suite of smart-contracts on the Ethereum blockchain, Azimuth determines which Ethereum addresses own which Azimuth identities, called <i>points</i>. All point-related operations, such as transfers, are governed at this layer. But Azimuth isn&#39;t built strictly for Arvo -- it could be used as a generalized identity system for other projects. </p><p>These otherwise-parallel systems meet when you want to connect to the Arvo network. Your Arvo personal server, called your <i>ship</i>, needs to be able to prove cryptographically that it is who it says it is. This proof comes in the form of a keyfile, derived from your point, that you use to start your ship. </p><p>A metaphor might help illustrate the relationship between these two systems: the Arvo network is the neighborhood that you live in; Azimuth is the bank vault that stores the deed to your house. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/community-tutorials/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="community-docs-">Community Docs </h1><p>Here are some tutorials written by members of the Urbit community. Some are a little outdated, but they may still prove useful. </p><ul><li><p><a href="https://github.com/joemfb/mardev/tree/master/docs/gen">Generators</a> by <code>~master-morzod</code> </p></li><li><p><a href="https://github.com/Fang-/Urbit-By-Doing">Urbit by Doing</a> by <code>~palfun-foslup</code> </p></li><li><p><a href="https://github.com/knubie/learning-hoon">Learning Hoon</a> by <code>@knubie</code> </p></li></ul><p>If you want to add something to the list, <a href="mailto:support@urbit.org">shoot us an email</a> or make a pull request in the <a href="https://github.com/urbit/docs">docs repository</a>. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/contributing/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="contributing-">Contributing </h1><p>We accept submissions for improving our <a href="https://github.com/urbit/urbit/">code</a> and <a href="https://github.com/urbit/docs/">documentation</a> alike. </p><p>If you&#39;re interested in contributing, but don&#39;t know where to start, feel free to <a href="mailto:support@urbit.org">send us an email</a>. </p><h2 id="code-guidelines-">Code guidelines </h2><p>Our official guide to contributing can be found <a href="https://github.com/urbit/urbit/blob/master/CONTRIBUTING.md">here</a>, which is most useful for large and low-level changes. </p><p>Before contributing code, you should familiarize yourself with the <a href="/docs/learn/arvo/style">Hoon style guide</a>. For a good example of preferred Hoon coding style, see <a href="https://github.com/urbit/arvo/blob/master/sys/vane/ford.hoon">ford.hoon</a>. </p><h2 id="community-guidelines-">Community Guidelines </h2><p>Urbit is both code and community. We have guidelines for the former, and we also have guidelines for the latter. </p><h3 id="jurisdiction-">Jurisdiction </h3><p>Urbit is a decentralized system, both technically and in spirit. This means that no one, Tlon Corp. or otherwise, has the technical ability to police the entire network. But we do admit that moderation is necessary; we just think that it’s not strictly a technical problem. </p><p>What we can do, and what we propose to do in this document, is define how we plan on moderating our little, but important, corner of Urbit. We define the limits of our jurisdiction as the general-purpose discussion channel <code>/urbit-help</code>, our forum, <code>fora</code> and, adjacently, the GitHub issues on any of the <a href="https://github.com/urbit">official urbit repos</a>. </p><p>Our hope is that the system established here can serve as a model for other corners of Urbit. But it bears repeating: <b>Tlon is technically incapable of moderating the Urbit network in general</b>. </p><h3 id="use-of-these-guidelines-">Use of these guidelines </h3><p>The goal of these guidelines is to provide clear principles which can be used by moderators for the resolution of disputes in this jurisdiction. The hope is that, by knowing the guidelines that will be cited in case of a dispute, users can have clear expectations of how to comport themselves and how a judgement will be made. The ideal is that, right before pressing “Submit” on an inflammatory Fora post, the errant Urbiter will pause and remember the following mandates. </p><h3 id="the-pentalogue-">The Pentalogue </h3><h4 id="1--stay-on-topic-">1. Stay on topic </h4><p>Conflicts about the work, about building Urbit, are good conflicts. Conflicts about haircuts, politics or sports are not productive and are best conducted in a DM or a private circle. </p><h4 id="2--treat-everyone-like-a-person-">2. Treat everyone like a person </h4><p>All of us have pre-loaded talking points against our preferred ideological and intellectual opponents. Unleashing them prematurely often impedes communication and sours otherwise productive dialogue. It is also not nice. So, instead of treating a human being as merely an avatar for an idea, treat them like a person. </p><p>“Treating someone like a person” means responding to what people actually say, instead of what you think such a person would say. </p><p>Before responding to something that seems objectionable, make sure that the other party is actually saying what you think they’re saying. Ask questions and be nice. </p><h4 id="3--skin-in-the-game-">3. Skin in the game </h4><p>No one likes comments like “this sux” in a thread of otherwise serious commentary. If other people have something to lose (even if it’s just face), be respectful. And, ideally, put some skin in the game yourself. </p><p>In general, establish yourself in a conversation or a subject area before you start attacking anyone. Better yet: don&#39;t attack anyone. </p><h4 id="4--assume-good-faith-">4. Assume good faith </h4><p>If anyone has gone through the trouble of booting a ship, submitting an issue, learning Hoon, reading through our docs or otherwise shown themselves committed to our wild-eyed vision, they are to be assumed to be a friend. </p><p>If you can choose to interpret a statement as a sneaky slight or a clumsy compliment, choose the latter. </p><h4 id="5--respect-the-mods-">5. Respect the mods </h4><p>We believe that all good governance terminates in a human relationship, and that moderators fulfill that role. All moderators will be forced to make judgments not covered by this document, and that will doubtless make some unhappy; maybe even you. Please respect the fact that someone took this responsibility on for the greater good. </p><p>The flipside of this is that moderators are expected to act in accordance with the dignity of that office. Abuse of power will not be tolerated. </p><h3 id="adjudication-">Adjudication </h3><p>The body responsible for the hearing of and ruling on claims is the Council, composed of moderators. Moderators are to serve for a term of one year. </p><p>Any planet-holder on the network dissatisfied with the behavior of another planet-holder must first send a complaint to the Council with a link to the offending message or document. </p><p>The case will be assigned a moderator at random, who will decide the matter. The finding will include a punishment which can range from censure to temporary or permanent blacklisting. </p><p>If one of the parties in the case would like to file an appeal, the case can be heard and ruled on by the entire Council. All proceedings of the Council are public and all past behavior in the jurisdiction can be considered in the Councils’ decision. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/galaxies-stars-and-planets/index.htmldeleted−8
@@ -1,8 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="galaxies--stars--and-planets-">Galaxies, Stars, and Planets </h1><p>The current internet has no consistent system of identity. There are only quasi-identities such as IP addresses, Google accounts and email addresses, each able to be assumed and abandoned without much trouble. The result is a hostile social experience, since bad actors -- spammers, scammers, malware-spreaders, and harassers -- have an inexhaustible supply of places to hide. </p><p>That&#39;s why we built a system for persistent identity called <a href="../arvo-vs-azimuth">Azimuth</a>. Azimuth identities are called <i>points</i>, and you need one to use the Arvo network. Points are secure, since they are owned and controlled with key-pair the Ethereum blockchain, which Azimuth is built on top of. </p><p>An Azimuth point is a pronounceable string like <code>~firbyr-napbes</code>. It means nothing, but it&#39;s easy to remember and say out loud. <code>~firbyr-napbes</code> is actually just a 32-bit number (<code>3.237.967.392</code>, to be exact) that we turn into a human-memorable string. </p><p>Points come in three classes: <b>galaxies</b>, <b>stars</b>, and <b>planets</b>. You can tell what class a point is in by how long its name is. The address space grows like a family tree. Galaxies are 8-bit and have names like <code>~mul</code>. Galaxies can issue 16-bit stars (<code>~dacpyl</code>), which can themselves issue 32-bit planets (<code>~laptel-holfur</code>). </p><p>Planets are intended for everyday use by an adult human, and there is a maximum of about 4.3 billion of them (2 to the 32nd power). Stars and galaxies, on the other hand, are meant to act as network infrastructure: in the Arvo network they provide P2P routing and distribute software updates. </p><pre> Size Name Parent Object Example
2− ----- ------ ------ ------ -------
3− 2^8 galaxy ~ supernode ~zod
4− 2^16 star galaxy supernode ~dozbud
5− 2^32 planet star user ~tasfyn-partyv
6− 2^64 moon planet device ~sigsam-nimbot-tasfyn-partyv
7− 2^128 comet ~ bot ~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex
8−</pre><h2 id="moons-and-comets-">Moons and Comets </h2><p>In addition to these three classes of Azimuth points, there two other kinds of Urbit identities, but they do <i>not</i> use Azimuth. </p><p><b>Moons</b> are 64 bits, are issued by planets, and have names like <code>~doznec-salfun-naptul-habrys</code>. Moons are meant for connected devices: phones, smart TVs, digital thermostats. Moons are not independent, but are subordinated to their parent planet. </p><p><b>Comets</b> are 128-bit points with no parents that can be launched by anyone. They are meant for bots. Being disposable and essentially unlimited, they will likely not be trusted by the others on the Arvo network. They have enormous names, like <code>~racmus-mollen-fallyt-linpex--watres-sibbur-modlux-rinmex</code>. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="introduction-">Introduction </h1><p>Welcome to the documentation for the Urbit project, including the Azimuth identity layer, the Arvo operating system, and the Hoon programming language. This documentation is maintained by <a href="https://tlon.io">Tlon</a> in a public <a href="https://github.com/urbit/docs">GitHub repository</a>. Issues and contributions are welcome. </p><p>The documentation is organized into four high-level sections. Read on to get acquainted. </p><h2 id="introduction-"><a href="/docs/introduction">Introduction</a> </h2><p>If you&#39;re looking for a high-level introduction to the Urbit project and its components, start here. </p><ul><li><p><a href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a>, a quick explanation of the two parallel systems that compose Urbit. </p></li><li><p><a href="/docs/introduction/technical-overview">Technical Overview</a>, a more in-depth description of the entire Urbit stack. </p></li><li><p><a href="/docs/introduction/contributing">Contributing</a>, a guide to getting involved with the Urbit project. </p></li><li><p><a href="/docs/introduction/community-tutorials">Community Tutorials</a>, a collection of unofficial but useful Urbit learning resources. </p></li><li><p><a href="/docs/introduction/source-code-overview">Source Code</a>, an explanation of Urbit&#39;s constituent GitHub repos. </p></li></ul><h2 id="getting-started-"><a href="/docs/getting-started">Getting Started</a> </h2><p>If you&#39;d like to install Arvo, get an Azimuth point, and/or get on the Urbit network, you&#39;ll find guides here. Dive in, and don&#39;t be afraid to <a href="mailto:support@urbit.org">ask for help</a>! </p><ul><li><p><a href="/docs/getting-started">The Installation Guide</a>, a step-by-step walkthrough for getting Urbit running. </p></li><li><p><a href="/docs/getting-started/azimuth">The Azimuth section</a>, which contains information on managing your Azimuth identities. </p></li></ul><h2 id="learn-"><a href="/docs/learn">Learn</a> </h2><p>If you&#39;re interested in contributing to the project, building applications, or understanding the system technically, take a look at our tutorials and explanations of the Urbit components. </p><ul><li><p><a href="/docs/learn/arvo/hoon">The Hoon Tutorial</a>, for our programming language. To learn the system, start here. </p></li><li><p><a href="/docs/learn/arvo">The Arvo section</a>, for the internals of Arvo, the Urbit operating system. </p></li></ul><h2 id="reference-"><a href="/docs/reference">Reference</a> </h2><p>If you&#39;re a developer looking for Arvo reference documentation, this section is for you. </p><ul><li><p><a href="/docs/reference/glossary">The Glossary</a> will help if you&#39;re confused by all the new jargon. </p></li><li><p><a href="/docs/reference/cheat-sheet">The Cheat Sheet</a> is a compact document for looking up Hoon expressions. </p></li><li><p><a href="/docs/reference/hoon-expressions">The Hoon Expressions</a> section contains more comprehensive reference material for Hoon expressions. </p></li><li><p><a href="/docs/reference/library">The Standard Library</a> section documents the Hoon standard library. </p></li></ul></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/source-code-overview/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="source-code-overview-">Source Code Overview </h1><p>We host all our source code on GitHub at <a href="https://github.com/urbit">github.com/urbit</a>. </p><p>Since there&#39;s quite a number of repos, we&#39;ll talk about a few of the most important ones here: </p><h2 id="urbit-urbit-"><a href="https://github.com/urbit/urbit"><code>urbit/urbit</code></a> </h2><p>This is the main Urbit repo. It contains the Urbit interpreter (all of the C code) and is the main entry point if you&#39;re going to build from source. </p><h2 id="urbit-arvo-"><a href="https://github.com/urbit/arvo"><code>urbit/arvo</code></a> </h2><p>Arvo is the Urbit operating system (written in Hoon). When you boot your Urbit, you get this over the air. The source code is kept here, and you&#39;ll need it if you want to do any heavy development work. </p><p>Interesting in working on Urbit documentation? This repository is where all the collaboration happens. The docs themselves are just markdown files hosted on a live ship. </p><h2 id="urbit-urbit-org-"><a href="https://github.com/urbit/urbit.org"><code>urbit/urbit.org</code></a> </h2><p>This is where the source code for urbit.org lives. Like the docs, the urbit.org website is just a collection of a few markdown files rendered by Tree, the Urbit web publishing system. </p><p>We&#39;re working on a new Urbit style guide for urbit.org, the docs and Urbit web apps. If you&#39;re into visual design or are a CSS fanatic, jump in here. </p><h2 id="urbit-org-azimuth-"><a href="https://github.com/urbit/azimuth"><code>urbit.org/azimuth</code></a> </h2><p>Azimuth is a general-purpose PKI that Urbit uses for network identities. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/introduction/technical-overview/index.htmldeleted−2
@@ -1,2 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="technical-overview-">Technical overview </h1><p>Urbit is a clean-slate software stack designed to implement an encrypted P2P network of general-purpose personal servers. Each server on this network is a deterministic computer called an &#39;urbit&#39; that runs on a Unix-based virtual machine. </p><p>The current Urbit stack includes (among other things): </p><ul><li><p>Arvo: the functional operating system of each urbit, written in Hoon. </p></li><li><p>Hoon: a strictly typed functional programming language whose standard library includes a Hoon-to-Nock compiler. </p></li><li><p>Nock: a low-level combinator language whose formal specification fits readably on a t-shirt. </p></li><li><p>Vere: a Nock interpreter and Unix-based virtual machine that mediates between each urbit and the Unix software layer. </p></li></ul><h2 id="anatomy-of-a-personal-server-">Anatomy of a personal server </h2><p>Your urbit is a deterministic computer in the sense that its state is a pure function of its event history. Every event in this history is a <a href="https://en.wikipedia.org/wiki/Transaction_processing">transaction</a>; your urbit&#39;s state is effectively an <a href="https://en.wikipedia.org/wiki/ACID">ACID database</a>. </p><p>Because each urbit is deterministic we can describe its role appropriately in purely functional terms: it maps an input event and the old urbit state to a list of output actions and the subsequent state. This is the Urbit transition function. </p><pre>&lt;input event, old state&gt; -&gt; &lt;output actions, new state&gt;
2−</pre><p>For example, one input event could be a keystroke from the terminal, say <code>[enter]</code> after having already typed <code>(add 2 2)</code>; and an output action could be to print in the terminal window the resulting value of a computation performed when the user hit <code>[enter]</code>, in this case <code>4</code>. The input event is stored in the urbit&#39;s event history. </p><p>Events always start from outside of your urbit, whether they&#39;re local to the computer running the urbit (e.g., a keystroke in the terminal) or they originate elsewhere (e.g., a packet received from another urbit). When an event is processed, various parts of the urbit state can be modified before the resulting list of output actions is returned. </p><p>Can output actions from your urbit cause side-effects in the outside world? The answer had better be “yes,” because a personal server without side effects isn&#39;t useful for much. In another sense the answer had better be “no,” or else there is a risk of losing functional purity; your urbit cannot <i>guarantee</i> that the side effects in question actually occur. What&#39;s the solution? </p><p>Each urbit is <a href="https://en.wikipedia.org/wiki/Sandbox_(computer_security%29">sandboxed</a> in a virtual machine, Vere, which runs on Unix. Code running in your urbit cannot make Unix system calls or otherwise directly affect the underlying platform. Strictly speaking, internal urbit code can only change internal urbit state; it has no way of sending events outside of its runtime environment. Functional purity is preserved. </p><p>In practical terms, however, you don&#39;t want your urbit to be an impotent <a href="https://en.wikipedia.org/wiki/Brain_in_a_vat">brain in a vat</a>. That&#39;s why Vere also serves as the intermediary between your urbit and Unix. Vere observes the list of output events, and when external action is called for makes the appropriate system calls itself. When external events relevant to your urbit occur in the Unix layer, Vere encodes and delivers them as input events. </p><h3 id="arvo-">Arvo </h3><p>Arvo is a purely functional, <a href="https://en.wikipedia.org/wiki/Cooperative_multitasking">non-preemptive</a> OS, written in Hoon, that serves as the event manager of your urbit. It can upgrade itself from over the network without downtime. The Arvo kernel proper is quite simple -- it&#39;s only about 600 lines of code, excluding its various modules. </p><p>The Urbit transition function is implemented in Arvo. Upon being &#39;poked&#39; by Vere with the pair of <code>&lt;input event, state&gt;</code>, Arvo directs the event to the appropriate OS module. The result of each Vere &#39;poke&#39; is a pair of <code>&lt;output events, new state&gt;</code>. Events are typed, and each has an explicit call-stack structure indicating the event&#39;s source module in Arvo. </p><p>Arvo modules are also called &#39;vanes&#39;. Arvo&#39;s vanes are: </p><ul><li><p>Ames: defines and implements Urbit&#39;s encrypted P2P network protocol, as well as Urbit&#39;s identity protocol. </p></li><li><p>Behn: manages timer events for other vanes. </p></li><li><p>Clay: global, version-controlled, and referentially-transparent file system. </p></li><li><p>Dill: terminal driver. </p></li><li><p>Eyre: HTTP web client and server. </p></li><li><p>Ford: typed functional build system. </p></li><li><p>Gall: application sandbox and manager. </p><ul><li><p>Dojo (app): Shell and Hoon REPL. </p></li><li><p>Talk (app): Chat client. </p></li></ul></li></ul><h3 id="hoon-">Hoon </h3><p>Hoon is a strictly typed functional programming language that compiles itself to Nock and is designed to support higher-order functional programming without requiring knowledge of category theory or other advanced mathematics. Haskell is fun but it isn&#39;t for everybody. </p><p>Hoon aspires to a concrete, imperative feel. To discourage the creation of write-only code, Hoon forbids user-level macros and uses ASCII digraphs instead of keywords. The type system infers only forward and does not use unification, but is not much weaker than Haskell&#39;s. The compiler and inference engine is about 3000 lines of Hoon. </p><h3 id="nock-">Nock </h3><p>Nock is a low-level <a href="https://en.wikipedia.org/wiki/Homoiconicity">homoiconic</a> combinator language. It&#39;s so simple that its <a href="../../nock/definition">specification</a> fits on a t-shirt. In some ways Nock resembles a nano-Lisp but its ambitions are more narrow. Most Lisps are one-layer: a practical language is to be created by extending a theoretically simple interpreter. The abstraction is simple and the implementation is practical. Unfortunately it&#39;s far more difficult to enforce both simplicity and practicality in an actual Lisp codebase. Hoon and Nock are two layers: Hoon, the practical layer, compiles itself to Nock, the simple layer. Your urbit runs in Vere, which includes a Nock interpreter, so it can upgrade Hoon over the network without downtime. </p><p>The Nock data model is quite simple. Every piece of data is a &#39;noun&#39;. A noun is an atom or a cell. An atom is any unsigned integer. A cell is an ordered pair of nouns. Nouns are acyclic and expose no pointer equality test. </p><h3 id="vere-">Vere </h3><p>Vere is the Nock runtime environment and Urbit VM. It&#39;s written in C, runs on Unix, and is the intermediate layer between your urbit and Unix. As noted earlier, Unix system calls are made by Vere, not Arvo; Vere must also encode and deliver relevant external events to Arvo. Vere is also responsible for implementing jets and maintaining the persistent state of each urbit. </p><p>In principle, Vere keeps a comprehensive log of every event from the time you initially booted your urbit. What happens if the physical machine loses power and your urbit&#39;s state is &#39;lost&#39; from memory? When your urbit restarts it will replay its entire event history and totally recover its latest state from scratch. </p><p>In practice, event logs become large and unwieldy over time. Periodically a snapshot of the permanent state is taken and the logs are pruned. You&#39;re still able to rebuild your state in case of power outage, down to the last keystroke. </p><p>Vere is not essential to the Urbit stack; one can imagine using Urbit on a hypervisor, or even bare metal. One member of the community is even working on an independent implementation of Urbit using Graal/Truffle on the JVM. </p><p>The Urbit stack (compiler, standard library, kernel, modules, and applications, but excluding Vere) is about 30,000 lines of Hoon. Urbit is patent-free and MIT licensed. </p><h3 id="azimuth-">Azimuth </h3><p>Azimuth is a general-purpose public-key infrastructure (PKI) on the Ethereum blockchain, used as a decentralized ledger for Urbit identities that we call <b>points</b>. Having a point is necessary to use the Urbit network, which makes it important to have a neutral ledger to determine who owns what. </p><p>Azimuth is not, however, part of the Urbit stack. Azimuth is a parallel system that be used as a generalized identity system for other projects. Azimuth “touches” the Urbit ecosystem when a point is used to boot a virtual computer on the Urbit network for the first time. When that happens, the point considered <b>linked</b> to Azimuth and the point’s full powers are available for use. Once a point is linked, it cannot be unlinked. </p><p>A metaphor might make the relationship between these two systems to understand: Azimuth is the bank vault that stores the deed to your house. The Urbit network is the neighborhood that you live in. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/admin/index.htmldeleted−24
@@ -1,24 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="admin-and-operation-">Admin and operation </h1><p>Your urbit (also called your <i>ship</i>) is a persistent Unix process that you mainly control from the console. For some things, a browser will also work. </p><h2 id="shutdown-">Shutdown </h2><p>You can turn your urbit off with <code>Ctrl-d</code> from the Talk or Dojo prompts. </p><p>You can force-quit your urbit with <code>Ctrl-z</code> from anywhere. </p><h2 id="restart-">Restart </h2><p>To restart your urbit simply pass the name of your pier: </p><pre>$ urbit some-planet
2−</pre><p>or </p><pre>$ urbit comet
3−</pre><h2 id="logging-">Logging </h2><p>To log an urbit&#39;s command line output to a file, use <code>script</code>: </p><pre>$ script urbit.log urbit your-urbit
4−</pre><h2 id="moving-your-pier-">Moving your pier </h2><p>Piers are designed to be portable, but it <i>must</i> be done while the urbit is turned off. Urbit networking is stateful, so you can&#39;t run two copies of the same urbit in two places. </p><p>To move a pier, simply move the contents of the directory it lives in. To keep these files as small as possible we usually use the <code>--sparse</code> option in <code>tar</code>. With a pier <code>your-urbit/</code>, something like this should work: </p><pre>tar -Scvzf ~/your-urbit.tar.gz ~/your-urbit/
5−scp your-old-server:~/your-urbit.tar.gz your-new-server:~
6−</pre><p>Then to unzip it, on your other Unix server, run: </p><pre>tar xfvz your-urbit.tar.gz
7−</pre><p>Delete the tar file, and, after installing Urbit on your new server, start your urbit back up with: </p><pre>urbit your-urbit
8−</pre><h2 id="console-">Console </h2><p>Your Urbit terminal is separated into two parts: the prompt (the bottom line) and the record (everything above that). The record is shared; all the output from all the apps in your command set appears in it. The prompt is multiplexed. </p><p>In the CLI, Urbit apps can process your input before you hit return. To see this in action try entering <code>)</code> as the first character at the Dojo prompt. Since there is no Dojo command or Hoon expression that starts with &#39;)&#39;, the Dojo rejects it. </p><p><code>Ctrl-x</code> - Switches the prompt between running console apps </p><p><code>Ctrl-c</code> - Crash current event. Processed at the Unix layer and prints a stack trace. </p><p><code>Ctrl-d</code> - From Talk or Dojo, stops your Urbit process. </p><p><code>Ctrl-z</code> - Stops the Urbit process from <i>anywhere</i>. </p><p><code>↑</code> / <code>↓</code> - History navigation </p><p>The following emacs-style key bindings are available: </p><pre>Ctrl-a Cursor to beginning of the line (Home)
9−Ctrl-b Cursor one character backward (left-arrow)
10−Ctrl-e Cursor to the end of the line (End)
11−Ctrl-f Cursor one character forward (right-arrow)
12−Ctrl-g Beep; cancel reverse-search
13−Ctrl-k Kill to end of line
14−Ctrl-l Clear the screen
15−Ctrl-n Next line in history (down-arrow)
16−Ctrl-p Previous line in history (up-arrow)
17−Ctrl-r Reverse-search
18−Ctrl-t Transpose characters
19−Ctrl-u Kill to beginning of line
20−Ctrl-y Yank from kill buffer
21−</pre><p>Full coverage of the Urbit shell, the Dojo is covered in the <a href="../shell/">Shell walkthrough</a>. </p><h2 id="web-">Web </h2><p>On startup Urbit tries to bind to <code>localhost:8080</code>. If you&#39;re already running something on <code>8080</code> -- such as another urbit -- you&#39;ll find the urbit that you just started on <code>8081</code>, and so on. For planets only, we also proxy web domains through Urbit&#39;s own servers. Any planet <code>~your-urbit</code> is also at <code>your-urbit.urbit.org</code>. </p><p>Your urbit serves a simple homepage from <code>http://localhost:8080</code> or <code>https://your-urbit.urbit.org</code> that should be self-explanatory. Since our HTTPS isn&#39;t audited / battle tested, we just call it “secure” HTTPS. You can find that on <code>8443</code>. Or <code>8444</code> (and so on) if you&#39;re already running something on <code>8443</code>. </p><p>A complete walkthrough of the Urbit web interface is <a href="../web/">here</a>. </p><h2 id="moons-">Moons </h2><p>Urbit namespace is distributed by having parent nodes sign the keys for child nodes. If you have a planet, your parent star issued your ticket. As a planet you, in turn, can sign the keys for moons. The basic idea is: your planet runs permanently in a data center somewhere and moons run on all your devices. Each planet can issue ~4 billion (<code>2^32</code>) moons. </p><p>To generate a random moon from your planet, run: </p><pre>~your-urbit:dojo&gt; +moon
22−</pre><p>You can use the resulting output in the same installation flow from <a href="../install">install</a> and <a href="../setup">setup</a>, following the same scheme as for booting a planet. That scheme is: </p><pre>$ urbit -w &lt;moonname&gt; -t &lt;ticket&gt; -c &lt;piername&gt;
23−</pre><p>The <code>-c &lt;piername&gt;</code> argument is not required, but it is recommended; otherwise, the resulting directory is a rather unwieldy moon name. </p><p>Here&#39;s how an example moon might be booted: </p><pre>$ urbit -w faswep-navred-sampel-palnet -t habref-mebsem-parsym-batlus -c mymoon
24−</pre><p>Moons are automatically synced to their parent <code>%kids</code> desk, and can control applications on their parent planet using <code>|link</code>. You can read more about those operations in the <a href="../filesystem">filesystem</a> and <a href="../shell">console</a> walkthroughs, respectively. </p><h2 id="continuity-breaches-">Continuity breaches </h2><p>While the Urbit network is in this alpha state, we sometimes have to reboot the whole network. This happens either when major changes need to be shipped or we hit a bug that can&#39;t be fixed over the air. </p><p>Because Urbit networking is stateful we call this a <i>continuity breach</i>. Everything has to be restarted from scratch. Your pier will continue to function after we have breached, but it wont connect to the rest of the Urbit network. </p><p>When this happens, back up any files you&#39;d like to save, shut down your urbit and recreate it (as if you were starting for the first time). </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/ames/index.htmldeleted−640
@@ -1,640 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="ames-">Ames </h1><p>Our networking protocol. </p><p><code>%ames</code> is the name of both our network and the vane that communicates over it. When Unix receives a packet over the correct UDP port, it pipes it straight into <code>%ames</code> for handling. Also, all packets sent over the <code>%ames</code> network are sent by the <code>%ames</code> vane. Apps and vanes may use <code>%ames</code> to directly send messages to other ships. In general, apps use gall and clay to communicate with other ships rather than using <code>%ames</code> directly, but this isn&#39;t a requirement. Of course, gall and clay use <code>%ames</code> behind the scenes to communicate across the network. These are the only two vanes that use <code>%ames</code>. </p><p><code>%ames</code> includes several significant components. Although the actual crypto algorithms are defined in zuse, they&#39;re used extensively in <code>%ames</code> for encrypting and decrypting packets. Congestion control and routing is handled entirely in <code>%ames</code>. Finally, the actual <code>%ames</code> protocol itself, including how to route incoming packets to the correct vane or app, is defined in <code>%ames</code>. </p><h2><div id="commentary">Commentary</div></h2><p><code>%ames</code> is our networking protocol. </p><p>First we give commentary on the code, the algorithms involved, and the protocol. We trace through the code touched when a packet is sent, received, acknowledged, and that acknowledgment applied. This is fairly comprehensive, and contains many implementation details, but if you understand this, then you understand <code>%ames</code>. </p><p>If you&#39;ve scrolled down this page, you may be intimidated by the amount of Hoon code, especially if you are new to the language. Don&#39;t be afraid of it, you don&#39;t have to read any of it if you don&#39;t want to -- every interesting action the code takes is explained in plain English. In fact, if you are new to the language, this may be a good learning opportunity. Even if you don&#39;t understand every line of Hoon code, you&#39;ll hopefully be able to follow most lines. By the time you&#39;ve worked through this, you&#39;ll have seen many common patterns and best practices. Hoon, much more than other languages, is best learned by reading and understanding large quantities of existing code. In this way, it is similar to learning a natural language. All of this code is in <code>arvo/ames.hoon</code>. </p><p>After the commentary, we have reference documentation for all the data structures that are specific to <code>%ames</code>. If you see a data structure or a variable used that you don&#39;t recognize, search for it in the code, and it&#39;s very likely defined in one of these data structures. We recommend that another tab is kept open for easy access to the data structure reference documentation. The code for these is split between <code>arvo/ames.hoon</code> and <code>arvo/zuse.hoon</code>. </p><p>The Lifecycle of a Packet (or, How a Packet Becomes Law) </p><hr /><p>Here, we will trace a packet as it makes its way through ames. There are actually two pathways through ames: the legacy path through <code>%want</code>, and the modern way, entered through <code>%wont</code>, with full end-to-end acknowledgments. Here we will only trace the modern way, though much of the path is the same for both. </p><p>When an app (or a vane) wishes to send a packet to another ship, it must send a <code>%wont</code> card: </p><pre> [%wont p=sock q=path r=*] :: e2e send message
2−</pre><p>This card takes three arguments. The <code>p</code> is a <code>sock</code>, that is, a pair of two ships, the first of which is the sender and the second is the receiver. But wait, you ask, why do I get to decide who is the sender? Can I fake like I&#39;m someone else? The reason is that there are potentially multiple ships on the same pier, and the kernel can send a message from any of them. If you attempt to send a message from a ship not on your pier, then ames will refuse to send it. If you hack around in your own copy of ames to go ahead and send it anyway, then the other ship will reject it because your key is bad. Only send messages from yourself. </p><p>The <code>q</code> is a path, representing the place on the other side that you want to receive your message. It is approximately equivalent to a port number. Messages on the same path are guaranteed to arrive in the same order as they were sent. No such guarantees are made across paths. </p><p>The <code>r</code> is the actual data that you are sending. As the type implies, this can be an arbitrary noun, and it will be transferred to the receiver exactly as-is, in a well-typed way. Of course, this is data that is sent over the wire, so be careful not to send anything too massive unless you&#39;re willing to wait. </p><p>But enough about the interface. Grepping in ames.hoon for <code>%wont</code>, we find that it appears in <code>++knob</code>. We see that we go directly into <code>++wise:am</code>. </p><pre> ++ wise :: wise:am
3− |= [soq=sock hen=duct cha=path val=* ete=?] :: send a statement
4− ^- [p=(list boon) q=fort]
5− zork:zank:(wool:(ho:(um p.soq) q.soq) hen cha val ete)
6−</pre><p>The inputs to this gate are exactly the sort of thing you&#39;d expect. In particular, everything in the <code>%wont</code> gate is here plus the calling duct so that we know where to send the acknowledgment and <code>ete</code> to determine if we&#39;re going to do the modern end-to-end acknowledgments. </p><p>The actual line of code looks intimidating, but it&#39;s really not all that bad. Working from the inside out, the call to <code>++um</code> sets up our domestic server, and the call to <code>++ho</code> sets up our knowledge about the neighbor we&#39;re sending to. From the outside, <code>++zork</code> and <code>++zank</code> just apply the changes made to our <code>++um</code> and <code>++am</code> cores, respectively. If you&#39;re familiar with the common idiom of <code>++abet</code>, that&#39;s all this is. The code predates the widespread usage of that name. </p><p>The interesting part, then, is in <code>++wool:ho:um:am</code>. Let&#39;s look at the code. </p><pre> ++ wool :: wool:ho:um:am
7− |= [hen=duct cha=path val=* ete=?] :: send a statement
8− ^+ +&gt;
9− =+ ^= rol ^- rill
10− =+ rol=(~(get by ryl.bah) cha)
11− ?~(rol *rill u.rol)
12− =+ sex=sed.rol
13− :: ~&amp; [%tx [our her] cha sex]
14− =. ryl.bah
15− %+ ~(put by ryl.bah) cha
16− rol(sed +(sed.rol), san (~(put by san.rol) sex hen))
17− =+ cov=[p=p:sen:gus q=clon:diz]
18− %+ wind [cha sex]
19− ?: ete
20− [%bund q.cov cha sex val]
21− [%bond q.cov cha sex val]
22−</pre><p>This is slightly more complicated, but it&#39;s still not all that bad. Our inputs, at least, are fairly obvious. </p><p>If you glance at the code for a second, you&#39;ll see that <code>++wind:ho:um:am</code> seems to be able to send a message, or <code>++meal:ames</code>, given a <code>++soup</code>. This gate, then, just sets up the things we need to for <code>++wind</code> to do its job. </p><p>We first get <code>rol</code>, which is a <code>++rill:ames</code>, that is, a particular outbound stream. This stream is specific to the path on which we&#39;re sending. If the path hasn&#39;t been used before, then we create it. We let <code>sex</code> be the number of messages we&#39;ve already sent on this path. </p><p>Then, we update the outbound stream by incrementing the number of messages sent and placing an entry in <code>san.rol</code> that associates the message number with the <code>duct</code> that sent the message. This allows us to give the acknowledgment to the one who sent the message. </p><p>We let <code>cov</code> be the current life of our crypto and our neighbor&#39;s crypto. At the moment, we only need our neighbor&#39;s life, which we put into the meal. </p><p>Finally, we call <code>++wind:ho:um:am</code> with the <code>++soup</code> of the path and message number and the <code>++meal:ames</code> of the payload itself. For end-to-end acknowledged messages, we use <code>%bund</code>. </p><pre> [%bund p=life q=path r=@ud s=*] :: e2e message
23−</pre><p>Looking at how we create the <code>%bund</code>, we can easily see what each field is for. </p><p>Following the trail a little further, we go to <code>++wind:ho:um:am</code>. </p><pre> ++ wind :: wind:ho:um:am
24− |= [gom=soup ham=meal]
25− :: ~&amp; [%wind her gom]
26− ^+ +&gt;
27− =^ wyv diz (zuul:diz now ham)
28− =^ feh puz (whap:puz now gom wyv)
29− (busk xong:diz feh)
30−</pre><p><code>++wind</code> does three things: it (1) encodes the message into a list of possibly-encrypted packets, (2) puts the message into the packet pump, and (3) sends any packets that are ready to be sent. Yes, our nice little linear run of each gate calling exactly one other interesting gate is over. We&#39;ll go in order here. </p><p><code>++zuul:lax:as:go</code> is the what converts a <code>++meal:ames</code> into a list of actual, 1KB packets. </p><pre> ++ zuul :: zuul:lax:as:go
31− |= [now=@da ham=meal] :: encode message
32− ^- [p=(list rock) q=_+&gt;]
33− =&lt; weft
34− ++ wasp :: null security
35− ++ weft :: fragment message
36− ++ wisp :: generate message
37−</pre><p>For organizational purposes, <code>++zuul</code> constructs an internal core with three arms. <code>++wasp</code> encodes the meal into an atom with no encryption. <code>++wisp</code> encodes a meal with possible encryption (else it simply calls <code>++wasp</code>). <code>++weft</code> takes the result of <code>++wisp</code> and splits it into actual packets. </p><pre> ++ wasp :: null security
38− ^-([p=skin q=@] [%none (jam ham)])
39−</pre><p>This simply jams the meal, wrapping it with the <code>skin</code> of <code>%none</code>, meaning no encryption. </p><p>Since <code>++wisp</code> is a little long, we&#39;ll go through it line-by-line. </p><pre> ++ wisp :: generate message
40− ^- [[p=skin q=@] q=_..wisp]
41−</pre><p><code>++wisp</code> produces a pair of a <code>skin</code> and an atom, which is the meal encoded as a single atom and possibly encrypted. </p><pre> ?: =(%carp -.ham)
42− [wasp ..wisp]
43−</pre><p>If the meal that we&#39;re encoding is a <code>%carp</code>, then we don&#39;t encrypt it. A <code>%carp</code> meal is a partial meal, used when a message is more than 1KB. Since the entire message is already encrypted, we don&#39;t need to encrypt each packet individually again. </p><pre> ?: !=(~ yed.caq.dur)
44− ?&gt; ?=(^ yed.caq.dur)
45− :_ ..wisp
46− :- %fast
47− %^ cat 7
48− p.u.yed.caq.dur
49− (en:r:cluy q.u.yed.caq.dur (jam ham))
50−</pre><p>If we have a symmetric key set up with this neighbor, then we simply use it. The skin <code>%fast</code> is used to indicate a symmetric key. </p><pre> ?: &amp;(=(~ lew.wod.dur) |(=(%back -.ham) =(%buck -.ham)))
51− [wasp ..wisp]
52−</pre><p>If we do not yet have our neighbor&#39;s will, then there is no way that we can seal the message so that only they may read it. If what we&#39;re sending is an acknowledgment, then we go ahead and just send it in the clear. </p><pre> =^ tuy +&gt;.$
53− ?:(=(~ lew.wod.dur) [*code +&gt;.$] (griz now))
54−</pre><p>If we don&#39;t have our neighbor&#39;s will, then we “encrypt” with a key of 0. If we do have their will, then we generate a new symmetric key that we will propose. </p><pre> :_ ..wisp
55− =+ yig=sen
56− =+ bil=law.saf :: XX send whole will
57− =+ hom=(jam ham)
58−</pre><p><code>yig</code> will be the life and engine for our current crypto. <code>bil</code> is our will. <code>hom</code> is the meal encoded as a single atom. </p><pre> ?: =(~ lew.wod.dur)
59− :- %open
60− %^ jam
61− [~ `life`p.yig]
62− bil
63− (sign:as:q.yig tuy hom)
64−</pre><p>If we do not have our neighbor&#39;s will, then we send our current life along with our will and the message. The message itself is “signed” with a key of 0. </p><pre> :- %full
65− =+ cay=cluy
66− %^ jam
67− [`life`p.cay `life`p.yig]
68− bil
69− (seal:as:q.yig pub:ex:r.cay tuy hom)
70− -- :: --zuul:lax:as:go
71−</pre><p>If we do have our neighbor&#39;s will, then we send our perception of their current life, our current life, our will, and the message. The message is sealed with their public key so that only they can read our message. </p><p>Once we have the message encoded as an atom, <code>++weft</code> goes to work. </p><pre> ++ weft :: fragment message
72− ^- [p=(list rock) q=_+&gt;.$]
73− =^ gim ..weft wisp
74− :_ +&gt;.$
75− ^- (list rock)
76−</pre><p>We&#39;re going to produce a list of the packets to send. First, we use the aforementioned <code>++wisp</code> to get the message as an atom. </p><pre> =+ wit=(met 13 q.gim)
77− ?&lt; =(0 wit)
78−</pre><p><code>wit</code> is the number of 1KB (2^13 bit) blocks in the message. We assert that there is at least one block. </p><pre> ?: =(1 wit)
79− =+ yup=(spit [our her] p.gim q.gim)
80− [yup ~]
81−</pre><p>If there is exactly one block, then we just call <code>++spit</code> to turn the message into a packet. We&#39;ll explain what <code>++spit</code> does momentarily. </p><pre> =+ ruv=(rip 13 q.gim)
82− =+ gom=(shaf %thug q.gim)
83− =+ inx=0
84−</pre><p>If there is more than one block, then we rip it into blocks in <code>ruv</code>. <code>gom</code> is a hash of the message, used as an id. <code>inx</code> is the number of packets we&#39;ve already made. </p><pre> |- ^- (list rock)
85− ?~ ruv ~
86− =+ ^= vie
87− %+ spit
88− [our her]
89− wasp(ham [%carp (ksin p.gim) inx wit gom i.ruv])
90− :- vie
91− $(ruv t.ruv, inx +(inx))
92−</pre><p>Here we package each block into a packet with <code>++spit</code> and produce the list of packets. </p><pre> ++ spit :: cake to packet
93− |= kec=cake ^- @
94− =+ wim=(met 3 p.p.kec)
95− =+ dum=(met 3 q.p.kec)
96− =+ yax=?:((lte wim 2) 0 ?:((lte wim 4) 1 ?:((lte wim 8) 2 3)))
97− =+ qax=?:((lte dum 2) 0 ?:((lte dum 4) 1 ?:((lte dum 8) 2 3)))
98− =+ wix=(bex +(yax))
99− =+ vix=(bex +(qax))
100− =+ bod=:(mix p.p.kec (lsh 3 wix q.p.kec) (lsh 3 (add wix vix) r.kec))
101− =+ tay=(ksin q.kec)
102− %+ mix
103− %+ can 0
104− :~ [3 1]
105− [20 (mug bod)]
106− [2 yax]
107− [2 qax]
108− [5 tay]
109− ==
110− (lsh 5 1 bod)
111−</pre><p>This is how we turn a message into a real packet. This has the definition of the packet format. </p><p><code>wim</code> is the length of the sending ship, and <code>dum</code> is the length of the receiving ship. There are only five possibilities for each of those, corresponding to carriers, cruisers, destroyers, yachts, and submarines. These are encoded in <code>yax</code> and <code>qax</code> as 0, 0, 1, 2, and 3, respectively. Thus, <code>wix</code> and <code>vix</code> are the number of bytes that must be reserved for the ship names in a packet. </p><p>Next, we construct <code>bod</code> by simply concatenating the sending ship, the receiving ship, and the body of the message. Then, we get the encryption mechanism from <code>++skin:ames</code>, which may be a 0, 1, 2, or 3, and put it in <code>tay</code>. </p><p>Next, we concatenate together, bit by bit, some final metadata. We use three bits for our protocol number, which is incremented modulo eight when there is a continuity breach or the protocol changes. We use the final twenty bits of a hash of the body (which, we suppose, makes it a twenty bit hash) for error-checking. We use two bits to tell how much room is used in the body for the sending ship, and another two bits for the receiving ship. Finally, we use five bits to store the encryption type. Note that since there are only two bits worth of encryption types, there are three unused bits here. This adds up to 32 bits of header data. Finally, we concatenate this onto the front of the packet. Thus, we can summarize the packet header format as follows. </p><pre> 0 1 2 3
112− 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
113− +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
114− |Proto| Hash of Body |yax|qax| Crypto |
115− +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
116−</pre><p>After this, there are <code>yax</code> bits of the sender name, <code>qax</code> bits of the receiver name, and up to 8192 bits of data. Thus, the maximum size of a packet is achieved in a message between two submarines with 8192 bits of data. This will require 32+128+128+8192 = 8480 bits, or 1060 bytes. </p><p>This concludes our discussion of <code>++zuul:lax:as:go</code>. If you recall from <code>++wind:ho:um:am</code>, the list of packets from <code>++zuul</code> is passed into <code>++whap:pu</code> to update the packet pump and get any packets that can be sent immediately. </p><pre> ++ whap :: whap:pu
117− |= [now=@da gom=soup wyv=(list rock)] :: send a message
118− ^- [(list rock) _+&gt;]
119− =. pyz (~(put by pyz) gom (lent wyv))
120− =. +&gt;
121− |- ^+ +&gt;.^$
122− ?~ wyv +&gt;.^$
123− %= $
124− wyv t.wyv
125− nus +(nus)
126− diq (~(put by diq) (shaf %flap i.wyv) nus)
127− puq (~(put to puq) [nus `soul`[gom 0 | ~2000.1.1 i.wyv]])
128− ==
129− (harv now)
130−</pre><p>First, we put into <code>pyz</code> the id for this message and the number of its packets that have not yet been acknowledged, which is of course the total number of packets since we haven&#39;t even sent the packets. </p><p>For every packet, we change three things in the state (<code>++shed:ames</code>) of our packet pump: (1) we increment <code>nus</code>, the number of packets sent; (2) we put the packet number into <code>diq</code> keyed by a hash of the packet; and (3) we put the packet into the packet queue, with the basic metadata of its id <code>gom</code>, 0 transmissions, not live yet, last sent in the year 2000, and the packet itself. </p><p>Finally, we harvest the packet pump. </p><pre> ++ harv :: harv:pu
131− |= now=@da :: harvest queue
132− ^- [(list rock) _+&gt;]
133− ?: =(~ puq) [~ +&gt;(rtn ~)]
134− ?. (gth caw nif) [~ +&gt;]
135− =+ wid=(sub caw nif)
136− =| rub=(list rock)
137− =&lt; abet =&lt; apse
138− |%
139−</pre><p><code>++harv</code> contains a core for most of its work. The meat is in <code>++apse</code>. First, though, it sets itself up. If there aren&#39;t any packets in the queue, then we simply do nothing except set <code>rtn</code>, our next timeout, to nil because we don&#39;t have any packets that may need to be retransmitted. If we have more live (that is, sent and unacknowledged) packets than our window size, then we don&#39;t do anything. </p><p>Otherwise, we let <code>wid</code> be the width of our remaining packet window, and we initialize <code>rub</code> to nil. <code>rub</code> will be the list of packets that are ready to be sent. We then call <code>++apse</code> and pass the result to <code>++abet</code>. <code>++apse</code> decides which packets are ready to be sent. </p><pre> ++ apse
140− ^+ .
141− ?~ puq .
142− ?: =(0 wid) .
143− =&gt; rigt =&lt; left
144− ?&gt; ?=(^ puq)
145− ?: =(0 wid) .
146− ?. =(| liv.q.n.puq) .
147− :: ~&amp; [%harv nux.q.n.puq p.n.puq]
148− %_ .
149− wid (dec wid)
150− rub [pac.q.n.puq rub]
151− nif +(nif)
152− liv.q.n.puq &amp;
153− nux.q.n.puq +(nux.q.n.puq)
154− lys.q.n.puq now
155− ==
156−</pre><p>If there are no remaining packets to send, or if we&#39;ve filled the packet window, do nothing. We call <code>++rigt</code> and <code>++left</code> to process the left and right branches of the packet queue. </p><p>Now we assert that the queue is not empty, and we again check that we haven&#39;t filled the packet window. We will operate on the head of the queue. If the packet is live, then do nothing. Otherwise, we go ahead and send it. </p><p>To send, we (1) decrement <code>wid</code>, our packet window width; (2) cons the packet onto the <code>rub</code>, which will be returned as the list of packets to send; (3) increment <code>nif</code>, the number of live packets; (4) set the packet to be live; (5) increment the number of transmissions of the packet; and (6) set the last sent time of the packet to now. </p><pre> ++ left
157− ?&gt; ?=(^ puq)
158− ^+(. =+(lef=apse(puq l.puq) lef(puq [n.puq puq.lef r.puq])))
159− ++ rigt
160− ?&gt; ?=(^ puq)
161− ^+(. =+(rig=apse(puq r.puq) rig(puq [n.puq l.puq puq.rig])))
162−</pre><p>These do exactly what you would expect: they traverse the packet queue so that <code>++apse</code> gets called recursively through it. </p><p>Finally, <code>++abet</code> gets called, which resolves the changes. </p><pre> ++ abet
163− ?~ rub [~ +&gt;.$]
164− [(flop rub) +&gt;.$(rtn [~ (add rto now)])]
165−</pre><p>This returns the packets that we wish to send, and it updates the timeout so that we know when to try resending unacknowledged packets. </p><p>This concludes our discussion of <code>++whap:pu</code>. To finish <code>++wind:ho:um:am</code>, we just need to delve into <code>++busk:ho:um:am</code>. But wait, in the call to <code>++busk</code>, the first argument is <code>xong:diz</code>. What is this? This, my dear reader, is one more detour, this time into <code>++xong:lax:as:go</code>. </p><pre> ++ xong :: xong:lax:as:go
166− ^- (list ship) :: route unto
167− =+ [fro=xen too=xeno]
168− =+ ^= oot ^- (list ship)
169− =| oot=(list ship)
170− |- ^+ oot
171− ?~ too ~
172− ?: (lien fro |=(a=ship =(a i.too))) ~
173− [i.too $(too t.too)]
174− :: ~&amp; [%xong-to [our her] (weld oot ?&gt;(?=(^ fro) t.fro))]
175− (weld oot ?&gt;(?=(^ fro) t.fro))
176−</pre><p>This gets the list of intermediate ships needed to get a packet from us to our neighbor. First, we get <code>fro</code> and <code>too</code>, the “canons” of ourself and our neighbor, respectively. </p><p>What is this “canon”, you ask? A canon is simply a ship plus its “ancestors”, as defined by <code>++sein:title</code>. For example, the canon of <code>~hoclur-bicrel</code> is: </p><pre> ~hoclur-bicrel/try=&gt; (saxo:title ~hoclur-bicrel)
177− ~[~hoclur-bicrel ~tasruc ~tug]
178−</pre><p>If we follow the algorithm in <code>++xong</code>, we see that we are simply creating a list of ships that form a path from our neighbor to ourself. Essentially, we look through the canon of our neighbor until we find something in our own cannon -- a common ancestor. Or, if we are from different carriers, then there is no common ancestor. We then weld this onto the tail of our own canon. In the end, this is simply a list of possible ships to try to route via to get to our neighbor, ordered by preferability (that is, closeness to our neighbor). We will end up trying, in order, to find a lane to these. </p><p>Now, we can finally get to <code>++busk:ho:um:am</code>. </p><pre> ++ busk :: busk:ho:um:am
179− |= [waz=(list ship) pax=(list rock)] :: send packets
180− %_ +&gt;
181− bin
182− |- ^+ bin
183− ?~ pax bin
184− $(pax t.pax, bin (weld (flop (wist:diz now waz ~ i.pax)) bin))
185− ==
186−</pre><p>Thankfully, <code>++busk</code> is fairly simple. We go through the list of packets and convert them to <code>++boon:ames</code>s with <code>++wist:lax:as:go</code>. These boons are placed into <code>bin</code>, and they end up getting processed by <code>++clop</code> (this happens in <code>++knob</code>). </p><pre> ++ wist :: wist:lax:as:go
187− |= $: now=@da :: route via
188− waz=(list ,@p)
189− ryn=(unit lane)
190− pac=rock
191− ==
192− ^- (list boon)
193− ?: =(our her) [[%ouzo *lane pac] ~]
194− ?~ waz ~
195− =+ dyr=?:(=(her i.waz) dur (gur i.waz))
196− ?. ?&amp; !=(our i.waz)
197− ?=(^ lun.wod.dyr)
198− ==
199− $(waz t.waz)
200− :_ ?: ?=(%ix -.u.lun.wod.dyr)
201− $(waz t.waz)
202− ~
203− :+ %ouzo u.lun.wod.dyr
204− ?: &amp;(=(i.waz her) =(~ ryn)) pac
205− =+ mal=(jam `meal`[%fore her ryn pac])
206− %- spit
207− ^- cake
208− :* [our i.waz]
209− ?~ yed.caq.dyr [%none mal]
210− :- %fast
211− %^ cat 7
212− p.u.yed.caq.dyr
213− (en:crub:crypto q.u.yed.caq.dyr mal)
214− ==
215−</pre><p>This takes a sample of the current time, the list of ships that we just generated, a lane if we already know it, and the packet itself. </p><p>First, if we are sending a message to ourself, then we simply create a <code>%ouzo</code> boon with a bunted lane. Otherwise, if there are no routing candidates, there is nothing we can do, so we return nil. </p><p>Next, we get the <code>++dore:ames</code> of the first routing candidate. If we&#39;re looking at the neighbor to whom we&#39;re trying to send the message, then we simply use the <code>++dore:ames</code> that we already have. Otherwise, we get a default <code>++dore:ames</code>. </p><p>If we&#39;re the first routing candidate, or if we have don&#39;t have a lane to this candidate, then we skip this candidate and move on to the next one. </p><p>If we have only a provisional ip address, then we try to send on it, but we also try to send on later routing candidates as well. Otherwise, we only send on this one candidate. </p><p>Finally, we create the actual <code>%ouzo</code> boon. The lane is the one from our <code>++dore:ames</code>. If we&#39;re sending it directly to our intended recipient, and we haven&#39;t been told to use a specific lane, then we just send the packet directly. Otherwise, we wrap it in a little <code>%fore</code> meal, telling the intermediary to whom we wish it to be sent. If we have already set up a symmetric key with the intermediary, then we encrypt it with that. Otherwise, we send it in the clear. </p><p>Now, if you recall, we have traced all the way through from the beginning when, in <code>++knob</code>, the <code>%wont</code> card was handled by a call to <code>++wise</code>. There is only one more step before the packet is finally sent. Looking in <code>++knob</code>, we see that the resultant list of boons is passed into <code>++clop</code>, which will execute the correct actions and return a list of moves. In <code>++clop</code>, we see the handling of each specific boon. The one we are interested in is <code>%ouzo</code>, since that is the only one we have sent thus far. </p><pre> %ouzo
216− :: ~&amp; [%send now p.bon `@p`(mug (shaf %flap q.bon))]
217− :_ fox
218− [[gad.fox [%give %send p.bon q.bon]] ~]
219−</pre><p>Very simply, we give a <code>%send</code> gift along the special duct that goes straight into the bowels of unix. This is the last stop before we drop into vere, and later libuv. And then... the world. </p><p>The packet, after its creation, embarks on a journey across physical time and space into the great unknown. Hurtling through fiber-optic cables at hundreds of thousands of kilometers per second, it finally arrives at our neighbor&#39;s network adapter. The adapter tells unix, unix tells libuv, libuv tells vere, and vere sends a <code>%hear</code> kiss to ames. And now we reenter the kernel. </p><p>The <code>%hear</code> kiss goes straight to <code>++knob</code>, just as did the <code>%wont</code> kiss earlier. </p><pre> %hear
220− (~(gnaw am [now fox]) %good p.kyz q.kyz)
221−</pre><p>Here, though, we call <code>++gnaw:am</code> to process the packet. The arguments to <code>++gnaw</code> are the same as those to the <code>%hear</code> kiss: the lane on which the packet was received and the packet itself. The other argument is just <code>%good</code>, which is a <code>++cape:ames</code> saying that we expect the packet to succeed. If a formal error occurs, then since we have a transactional event system, the <code>%hear</code> event will never be considered to have actually happened, and unix will send a <code>%hole</code> kiss so that we may send a negative acknowledgment. </p><pre> ++ gnaw :: gnaw:am
222− |= [kay=cape ryn=lane pac=rock] :: process packet
223− ^- [p=(list boon) q=fort]
224− ?. =(2 (end 0 3 pac)) [~ fox]
225− =+ kec=(bite pac)
226− ?: (goop p.p.kec) [~ fox]
227− ?. (~(has by urb.ton.fox) q.p.kec)
228− [~ fox]
229− =&lt; zork
230− =&lt; zank
231− %- ~(chew la:(ho:(um q.p.kec) p.p.kec) kay ryn %none (shaf %flap pac))
232− [q.kec r.kec]
233−</pre><p>First, we check the protocol number. If it is not correct, then we simply ignore the packet entirely. Otherwise, we parse the packet with <code>++bite</code>, which converts a packet atom into a <code>++cake:ames</code>, that is, a triple of the <code>sock</code> (pair of sender and receiver), the <code>skin</code> (encryption type), and the data. </p><pre> ++ bite :: packet to cake
234− |= pac=rock ^- cake
235− =+ [mag=(end 5 1 pac) bod=(rsh 5 1 pac)]
236− =+ :* vez=(end 0 3 mag) :: protocol version
237− chk=(cut 0 [3 20] mag) :: checksum
238− wix=(bex +((cut 0 [23 2] mag))) :: width of receiver
239− vix=(bex +((cut 0 [25 2] mag))) :: width of sender
240− tay=(cut 0 [27 5] mag) :: message type
241− ==
242− ?&gt; =(2 vez)
243− ?&gt; =(chk (end 0 20 (mug bod)))
244− :+ [(end 3 wix bod) (cut 3 [wix vix] bod)]
245− (kins tay)
246− (rsh 3 (add wix vix) bod)
247−</pre><p>This is exactly the inverse of <code>++spit</code>. Note that here we check both the protocol number and the hash, crashing on error. Remember that a crash will result in a negative acknowledgment being sent. </p><p>Continuing in <code>++gnaw</code>, we see that if the intended recipient is not on our pier, then we drop the packet. </p><p>If we&#39;ve gotten this far, then we wish to process the packet. Recall that <code>++ho</code> and <code>++um</code> set up the domestic server and foreign client cores, respectively, and that <code>++zork</code> and <code>++zank</code> resolve any changes to these cores. </p><p>The new stuff here, then, is the <code>++la</code> core and the <code>++chew</code> arm. The <code>++la</code> sets up a core for this particular packet, containing the current success/failure <code>++cape:ames</code>, the lane it was sent on, the encryption type, and a hash of the packet, used as an id. </p><p><code>++chew</code> is called with the encryption type and the message itself. It contains a little helper core inside of it, which starts immediately with <code>++apse</code>. </p><pre> ++ apse
248− ^+ +&gt;.$
249− =+ oub=bust:puz
250− =+ neg==(~ yed.caq.dur.diz)
251− =. +&gt;.$ east
252− =+ eng==(~ yed.caq.dur.diz)
253− =+ bou=bust:puz
254− =. bin
255− ?. &amp;(oub !bou) bin
256− :_(bin [%wine [our her] &quot; is ok&quot;])
257− =. bin
258− ?. &amp;(neg !eng) bin
259− :_(bin [%wine [our her] &quot; is your neighbor&quot;])
260− +&gt;.$
261−</pre><p>First, we let <code>oub</code> be true if our neighbor hasn&#39;t been responding to us for more than sixteen seconds. Let <code>neg</code> be true if we haven&#39;t yet proposed a symmetric key, meaning that we haven&#39;t yet corresponded with this ship, so they are not our neighbor. Next, we run <code>++east</code>, which we&#39;ll go into in just a minute. </p><p>We now do the same two checks and store the results in <code>eng</code> and <code>bou</code>. If our neighbor has, like the prodigal son, returned after an extended absence, then we send a <code>%wine</code> boon as the proverbial fatted calf, which is simply printed out to the console. Likewise, if we are meeting one with whom we have never had the pleasure of acquainting ourselves, we send a message to the console to that effect. </p><p>We skipped over <code>++east</code>, which contains the meat of the processing. It first decrypts the message, then calls <code>++chow:la:ho:um:am</code> with the resultant meal. We&#39;ll go through each of the four cases in turn, but first since each one calls <code>++bilk:pu</code>, we&#39;ll take a brief detour. </p><pre> ++ bilk :: bilk:pu
262− |= now=@da :: inbound packet
263− ^+ +&gt;
264− =+ trt=(mul 2 rtt)
265− %= +&gt;.$
266− rue [~ now]
267− rto trt
268− rtn ?~(puq ~ [~ (add now trt)])
269− ==
270−</pre><p>This updates the timing information in our packet pump. <code>rue</code>, the last time we have heard from this neighbor, is set to now. <code>rto</code>, the retransmit timeout is set to twice the current ping time, and if there is anything in the packet queue, then we reset the next timeout, since we&#39;ve just heard a message. </p><p>Back to <code>++east</code>. </p><pre> %none
271− =. puz (bilk:puz now)
272− (chow ((hard meal) (cue msg)))
273−</pre><p>The simplest case is when the encryption type is <code>%none</code>. We first call <code>++bilk</code> to update the packet pump, then we cue (unjam) the message into a meal. We hard cast it into a meal -- if the cast fails, then we do want to crash since someone is sending us malformed data. Finally, we send the result to <code>++chow</code> for interpretation and handling. </p><pre> %fast
274− =+ [mag=`hand`(end 7 1 msg) bod=(rsh 7 1 msg)]
275− =+ dey=(kuch:diz mag)
276− ?~ dey
277− ~&amp; [%bad-key her mag]
278− +&gt;.$ :: ignore unknown key
279− =. puz (bilk:puz now)
280− =^ key diz u.dey
281− (chow(aut sin) ((hard meal) (cue (dy:q:sen:gus key bod))))
282−</pre><p>For symmetric encryption, we first get the <code>++hand</code>, which is the hash of the symmetric key. We pass it to <code>++kuch:lax:as:go</code>, which returns the key if we either have used it before or we have proposed it. If we have proposed it, then we change its status from proposed to real. If <code>++kuch</code> fails, then we drop the packet and print out a <code>%bad-key</code> message. </p><p>Otherwise, we call <code>++bilk</code> as before to update the packet pump and pass into <code>++chow</code> the decrypted data. </p><pre> %full
283− =+ mex=((hard ,[p=[p=life q=life] q=will r=@]) (cue msg))
284− =. diz (deng:diz q.mex)
285− =+ wug=cluy:diz
286− ?&gt; =(q.p.mex p.wug)
287− =+ gey=(sev:gus p.p.mex)
288− =+ mes=(need (tear:as:q.gey pub:ex:r.wug r.mex))
289− =. diz (wasc:diz p.mes)
290− =. puz (bilk:puz now)
291− (west(msg q.mes))
292−</pre><p>For sealed asymmetric encryption, we first take off the the layer of data that gives us the life and will of our neighbor, and we apply try to extend their former will with the new data. <code>++deng</code> will fail if this is impossible. </p><p>Next, we get our most current understanding of our neighbor&#39;s crypto, and we verify that it&#39;s the same life as what they&#39;re sending. Then, we get our own crypto from <code>++sev</code> and decrypt the message with the public key from our neighbor&#39;s crypto. We register the proposed symmetric key, update the packet pump, and call <code>++west</code>, which simply casts the message to a meal and calls <code>++chow</code>, reporting any error. </p><pre> %open
293− =+ mex=((hard ,[p=[~ q=life] q=will r=@]) (cue msg))
294− =. diz (deng:diz q.mex)
295− =+ wug=cluy:diz
296− ?&gt; =(q.p.mex p.wug)
297− =+ mes=(need (sure:as:r.wug *code r.mex))
298− =. puz (bilk:puz now)
299− (west(msg mes))
300−</pre><p>Finally, for signed asymmetric encryption, we, as before, take off the layer of data that gives us the life and will of our neighbor. This time, of course, we do not get our own crypto -- only that of our neighbor. </p><p>The rest you have seen. We call <code>++deng</code> to extend the will, we verify that their crypto life is what we think it ought to be, we “decrypt” the data, we update the packet pump, and we call <code>++west</code> to call <code>++chow</code>. </p><pre> ++ chow :: chow:la:ho:um:am
301− |= fud=meal :: interpret meal
302− ^+ +&gt;
303− =. diz ?:(=(%none aut) diz (wast:diz ryn))
304− (dine fud)
305−</pre><p>Here, if the message was encrypted at all, then we call <code>++wast:lax:as:go</code>, which simply updates the lane (route) to our neighbor (unless we&#39;re given a provisional route). This ensures that we always have the most direct possible path to them. </p><p>We&#39;ve been handling this meal for so long, we&#39;ve almost forgotten what we want to do with it. The telos is of any meal to be dined on. We will choose out the cases here that are important to our current investigation. </p><pre> %fore
306− =+ ^= lyn ^- lane
307− ?~ q.fud ryn
308− ?. ?=(%if -.u.q.fud) u.q.fud
309− [%ix +.u.q.fud]
310− :: u.q.fud
311− ?: =(our p.fud)
312− (emit %mead lyn r.fud)
313− =+ zid=(myx:gus p.fud)
314− (emir (wist:zid now xong:zid [~ lyn] r.fud))
315−</pre><p>Forwarding is the simplest case, since we&#39;ve seen all the arms before, except perhaps <code>++emit</code> and <code>++emir</code>, which simply take a boon or list of boons respectively and queue them up to be handled when the core resolves. If we&#39;re told to forward a packet to ourselves, then we emit a <code>%mead</code> boon which simply sends another <code>%hear</code> kiss to ourselves with the data. Otherwise, we try to find a route to the recipient, as before. </p><pre> %carp
316− =+ zol=(~(get by olz.weg) s.fud)
317− ?^ zol cock(kay u.zol)
318− =^ neb nys.weg
319− =+ neb=(~(get by nys.weg) s.fud)
320− ?^ neb [u.neb nys.weg]
321− =+ neb=`bait`[(kins p.fud) 0 r.fud ~]
322− [neb (~(put by nys.weg) s.fud neb)]
323− ?&gt; (lth q.fud p.r.neb)
324− ?&gt; =((kins p.fud) p.neb)
325− ?&gt; =(r.fud p.r.neb)
326− =+ doy=`(unit ,@)`(~(get by q.r.neb) q.fud)
327− ?^ doy cock
328− =&gt; ^+ . %= .
329− q.r.neb (~(put by q.r.neb) q.fud t.fud)
330− q.neb +(q.neb)
331− ==
332− :: ~&amp; [%carp q.fud s.fud q.neb p.r.neb]
333− ?: =(q.neb p.r.neb)
334− =: nys.weg (~(del by nys.weg) s.fud)
335− olz.weg (~(put by olz.weg) s.fud kay)
336− ==
337− (golf p.neb r.neb)
338− =. +&gt;.$ cock
339− +&gt;.$(nys.weg (~(put by nys.weg) s.fud neb))
340−</pre><p>Here, we have received a partial message, and we&#39;re just assembling the individual packets into a message. Most of this code is fairly algorithmic, so we&#39;ll just hit the high points. In the beginning, we check if we&#39;ve already received this message, and if so, we resend the acknowledgment. Remember, “always ack a dupe, never ack an ack”. </p><p>In <code>nys.weg</code> we keep track of an incoming set of partial packets, indexed by the <code>flap</code> hash that comes with every packet. We check to see if we have already received this partial message, and if so we acknowledge it. Otherwise, we put it in <code>nys.weg</code> unless this is the last message, in which case we ack the last partial message, move the complete message into <code>olz.weg</code>, and call <code>++golf</code>, which assembles the message and calls <code>++chew</code>, to start the dance again with the complete message. </p><pre> %bund
341− :: ~&amp; [%bund q.fud r.fud]
342− ?&gt; =(p:sen:gus p.fud)
343− (deer q.fud r.fud ?-(kay %dead ~, %good [~ s.fud]))
344−</pre><p>What if we&#39;re just receiving a regular old, garden variety message? We call <code>++deer</code> with the data from the message. If we already know that the message processing will fail (that is, if we got a <code>%hole</code> card from unix rather than a <code>%hear</code> card), then we don&#39;t even send the data at all. Remember, if a packet fails to process, it&#39;s as if it never even arrived, except that we send a negative acknowledgment. </p><pre> ++ deer :: deer:la:ho:um:am
345− |= [cha=path num=@ud dut=(unit)] :: interpret message
346− ^+ +&gt;
347− =+ rum=(fall (~(get by raz.bah) cha) *race)
348− %= +&gt;.$
349− +&gt;
350− ?. (gte num did.rum) :: always ack a dup
351− (cook (~(get by bum.rum) num) cha ~ ryn dam)
352− ?: dod.rum
353− (coat cha rum(mis (~(put by mis.rum) num [kay ryn dam dut])))
354− %= +&gt;.+&gt;.$
355− raz.bah
356− %+ ~(put by raz.bah) cha
357− rum(mis (~(put by mis.rum) num [kay ryn dam dut]))
358− ==
359− ==
360−</pre><p>First, we get the race for this particular triple of sender, receiver, and path, creating it if it doesn&#39;t exist. If we&#39;ve already acked the message, then we resend the ack. Note that <code>did.rum</code> is the number of packets we acknowledged, positively or negatively while <code>bum.rum</code> is a map of message numbers to negative acknowledgments. Thus, if a message number is less than <code>did.rum</code>, then if it&#39;s in <code>bum.rum</code> then it was negatively acknowledged, otherwise it&#39;s positively acknowledged. Thus, we are constant in space with the number of successful messages and linear in the number of failed messages. We&#39;ll document <code>++cook</code> later on, but suffice it to say that it sends an acknowledgment. It is to end-to-end acknowledgments what <code>++cock</code> is to packet-level acknowledgments. </p><p>If we are still processing a message (that is, <code>dod.rum</code> is false), then we simply put this message in the map of misordered packets to be processed when their time comes. “Processing a message” in this case means that we&#39;ve received the message and notified the correct application, but we&#39;re still waiting for the application-level acknowledgment. </p><p>Otherwise, we&#39;re ready for a packet, so we process it. </p><pre> ++ coat :: coat:ho:um:am
361− |= [cha=path rum=race] :: update input race
362− ^+ +&gt;
363− =+ cun=(~(get by mis.rum) did.rum)
364− ?~ cun
365− +&gt;.$(raz.bah (~(put by raz.bah) cha rum))
366− ?. =(%good p.u.cun) +&gt;.$
367− ?&gt; ?=(^ s.u.cun)
368− %= +&gt;.$
369− raz.bah (~(put by raz.bah) cha rum(dod |))
370− bin
371− :_ bin
372− :^ %mulk
373− [our her]
374− `soap:ames`[[p:sen:gus clon:diz] cha did.rum]
375− u.s.u.cun
376− ==
377−</pre><p>First, we grab the message we want to process and store it in <code>cun</code>. If it&#39;s a good packet, then we change <code>dod.rum</code> to false, meaning that we&#39;re in the middle of processing a packet and should not start processing another one. We also put a <code>%mulk</code> boon into the queue so that, when it all resolves, we send a mesage to the intended recipient application. The boon contains the sender, the receiver, the identity of the message, and the message itself. </p><p>This bubbles up all the way back to <code>++knob</code>, where we were handling the <code>%hear</code> card. Following the logic in <code>++knob</code>, we can see that the boons get sent into <code>++clop</code> to be turned into actual arvo-level moves. We&#39;ve been here before, if you recall, when we handled the <code>%cake</code> boon to send a message. Now, we&#39;re handling the <code>%mulk</code> boon, which is unfortunately slightly more complicated. </p><pre> %mulk
378− :: ~&amp; [%mulk p.bon q.bon]
379− ?&gt; ?=([@ @ *] q.q.bon)
380− ?&gt; ?=(%q i.q.q.bon)
381− ?+ i.t.q.q.bon
382− ~&amp; %mulk-bad
383− :_ fox
384− :~ :- (claw p.p.bon)
385− [%sick %wart p.bon i.t.q.q.bon t.t.q.q.bon r.bon]
386− ==
387− %ge :: %gall request
388− ?&gt; ?=([@ ~] t.t.q.q.bon)
389− =+ app=`term`(need ((sand %tas) i.t.t.q.q.bon))
390− =+ ^= pax
391− :+ (scot %p p.p.bon)
392− (scot %p q.p.bon)
393− q.q.bon
394− :_ fox [hen %pass pax %g %rote p.bon app r.bon]~
395− %gh :: %gall response
396− ?&gt; ?=([@ ~] t.t.q.q.bon)
397− =+ app=`term`(need ((sand %tas) i.t.t.q.q.bon))
398− =+ ^= pax
399− :+ (scot %p p.p.bon)
400− (scot %p q.p.bon)
401− q.q.bon
402− :_ fox [hen %pass pax %g %roth p.bon app r.bon]~
403− ==
404−</pre><p>We&#39;re dispatching messages based on the prefix of their path. Since only <code>%gall</code> apps use end-to-end acknowledgments at the moment, every path must have at least two elements, and the first one must be <code>%q</code>. Beyond that, we handle the <code>/q/ge</code> and <code>/q/gh</code> cases for gall requests and responses, respectively. </p><p>In both cases, we require the next term in the path to be the name of the intended recipient <code>%gall</code> app. Thus, a message to <code>/q/ge/talk</code> for example, will send a message to the talk app. </p><p>We then send a message to the app itself. The message is either a <code>%rote</code> or a <code>%roth</code> for a request and a response, respectively. The content is the <code>rook</code> or <code>roon</code> that was sent (stored in <code>r.bon</code>), but we don&#39;t actually handle that at all here. That&#39;s completely a <code>%gall</code>-level thing. We&#39;re just the messenger. </p><p>Notice the path we send this over. We encode the sender, the receiver, and the path over which it was sent. This fully specifies the <code>race</code> so that when the app gives us the acknowledgment we know where to send it. </p><p>We now have another interlude. We have entrusted our precious data, so carefully guarded and guided from the app on that far-away ship, to our local app. It has the ability to do whatever it pleases with it. It may take a significant amount of time to process. When the message has been handled by this app, though, it must produce an acknowledgment. Our final task is to deliver this acknowledgment to the sending app. </p><p>We should describe here what exactly these oft-mentioned acknowledgments actually consist of. There are two kinds of acknowledgments: positive and negative. A positive acknowledgment contains no data other than its existence. A negative acknowledgment may optionally include a reason for said negativity. Formally, a negative acknowledgment is an <code>ares</code>, which is a unit pair of a term and a list of tanks. If this is null, this is simply a failure with no associated information. If the pair exists, the term is a short error code that is usually both human and computer readable. For example, if you try to send a message to a valid <code>%gall</code> app that doesn&#39;t have any <code>++poke</code> to handle it, then <code>%gall</code> will give a negative acknowledgment with error term <code>%poke-find-fail</code>. The list of tanks is a human-readable description of the error. This often contains a stack trace. At any rate, all this information is returned to the sending app on the other end of the wire. </p><p>After this brief interlude, our story resumes in <code>++knap</code>, where we receive responses. In particular, a <code>%mean</code> indicates a negative acknowledgment while a <code>%nice</code> indicates a positive acknowledgment. </p><pre> ?(%mean %nice)
405− ?&gt; ?=([@ @ @ *] tea)
406− =+ soq=[(slav %p i.tea) (slav %p i.t.tea)]
407− =+ pax=t.t.tea
408− =+ ^= fuy
409− =&lt; zork =&lt; zank
410− %^ ~(rack am [now fox]) soq pax
411− ?-(+&lt;.sih %mean `p.+.sih, %nice ~)
412− =&gt; %_(. fox q.fuy)
413− =| out=(list move)
414− |- ^- [p=(list move) q=_+&gt;.^$]
415− ?~ p.fuy
416− [(flop out) +&gt;.^$]
417− =^ toe fox (clop now hen i.p.fuy)
418− $(p.fuy t.p.fuy, out (weld (flop toe) out))
419−</pre><p>Recall the format of the path we sent the message on, and you&#39;ll understand why <code>soq</code> and <code>pax</code> are the sender/receiver pair and path on which the message was sent. The rest of this is structured much like <code>++knob</code>, so we call <code>++rack:am</code> and send the resulting boons to <code>++clop</code>. Business as usual. </p><pre> ++ rack :: rack:am
420− |= [soq=sock cha=path cop=coop] :: e2e ack
421− =+ oh=(ho:(um p.soq) q.soq)
422− =. oh (cook:oh cop cha ~)
423− (cans:oh cha)
424−</pre><p>First, we set up <code>++um</code> and <code>++ho</code>, as we&#39;ve done twice before, for our domestic and foreign servers, respectively. The other two things are new, though. Well, <code>++cook</code> is not actually new, but we delayed the explanation saying only that it sends an acknowledgment. The time has come. </p><pre> ++ cook :: cook:ho:um:am
425− |= [cop=coop cha=path ram=(unit ,[ryn=lane dam=flap])]
426− ^+ +&gt; :: acknowledgment
427− =+ rum=(need (~(get by raz.bah) cha))
428− =+ lat=(~(get by mis.rum) did.rum)
429− ?: &amp;(?=(~ lat) ?=(~ ram)) ~&amp;(%ack-late-or-redundant +&gt;.$)
430− =+ ^- [ryn=lane dam=flap]
431− ?^ ram [ryn.u.ram dam.u.ram]
432− ?&lt; ?=(~ lat)
433− [q r]:u.lat
434− =. raz.bah
435− ?^ ram raz.bah
436− %+ ~(put by raz.bah) cha
437− rum(dod &amp;, bum ?~(cop bum.rum (~(put by bum.rum) did.rum u.cop)))
438− =^ roc diz (zuul:diz now [%buck cop dam ~s0])
439− (busk(diz (wast:diz ryn)) xong:diz roc)
440−</pre><p>If we are acknowledging a message that we have already acked, the <code>ram</code> will contain the new lane and flap to send the duplicate ack to. This happens if we call <code>++cook</code> in <code>++deer</code>, but it doesn&#39;t happen from <code>++rack</code>. If there is no message waiting to be acknowledged and we&#39;re not given an explicit lane and flap (that is, we&#39;re not sending a duplicate ack), then the app must have sent us multiple acknowledgments. We do the only sensible thing we can do and drop all acknowledgments after the first, printing a message. This is, in fact, an error, so it could be argued that we ought to crash. Whatever you do, don&#39;t depend on this not crashing. </p><p>First, we grab the race specified by the given path, and we get the most recent in-order message, which must be the one which is being acknowledged. </p><p>Then, we decide which lane/flap to respond on/to. Basically, in the usual case we respond on the lane through which the initial message was sent, which is stored along with the other packet information in <code>mis.rum</code>, since it has to be remembered across calls to ames. However, if we receive a duplicate message, then we must respond to the new message. It&#39;s quite possible the reason the other acknowledgment didn&#39;t get returned was that the lane between the ships was broken. </p><p>At any rate, we update the race by saying that we&#39;ve finished processing this packet (unless we&#39;re sending a duplicate ack) and, if we&#39;re sending a negative acknowledgment, putting the negative ack into <code>bum.rum</code> so that we can resend it if necessary. </p><p>We encode our new message, updating the packet pump, with <code>++zuul</code>, as before, and we send it off with <code>++busk</code>, routed via <code>++wast</code> to one of the ships in <code>++xong</code>. Of course, in practice, we don&#39;t even look at the ships in <code>++xong</code> because we already have a lane directly to our neighbor (the one over which they sent their message to us). </p><p>We glossed over the actual message we&#39;re sending back. We&#39;re sending a <code>%buck</code> meal, which is an acknowledgment. The <code>cop</code> specifies whether this is a positive or a negative ack, <code>dam</code> specifies the message we&#39;re acknowledging, and the <code>~s0</code> is a placeholder for the processing time required. This time is neither calculated (though it is hopefully obvious how to do so) nor used at present, but this information may be used in the future for improved congestion control. Since the round-trip time for an end-to-end acknowledged packet includes the processing time on the other end, most common congestion control algorithms will stumble when some messages take much longer to process than others. As noted, though, this is simply an opportunity for improvement -- our congestion control algorithms are relatively naive at the moment. </p><p>Recall that <code>++busk</code> calls <code>++wist</code> to put the actual <code>%ouzo</code> boon in the queue, which gets handled by <code>++clop</code> to actually send the message. This is the same pipeline as sending any other message, so we&#39;ll refer you to the explanation above if you&#39;ve forgotten it. </p><p>The last thing we need to do on this ship is move on to the next packet in the queue if there is one. If you recall, in <code>++rack</code> after the call to <code>++cook</code> there was a call to <code>++cans:ho:um:am</code>. </p><pre> ++ cans :: cans:ho:um:am
441− |= cha=path
442− =+ rum=(need (~(get by raz.bah) cha))
443− =. rum
444− %= rum
445− did +(did.rum)
446− mis (~(del by mis.rum) did.rum)
447− ==
448− (coat cha rum)
449−</pre><p>This is very simple. We increment the number of packets that we&#39;ve acknowledged on this race and we delete the packet that we just acknowledged from the set of misordered packets. </p><p>Then, we call <code>++coat</code> again to process the next packet if we&#39;ve already received it. And that&#39;s it for this. </p><p>The acknowledgment now travels the same path that its forebearer, the original message, once tread, but this time not into the great unknown. The weary traveler is seeking out its familial roots, finding the app from whom sprung forth the original message way back in paragraph three. When it arrives at the network adapter of its ancestors, the adapter tells unix, unix tells libuv, libuv tells vere, and vere sends a <code>%hear</code> kiss to ames. Once more into the kernel. </p><p>The <code>%hear</code> kiss is handled in <code>++knob</code> as before, leading to <code>++gnaw</code>, going over to <code>++chew</code>, <code>++apse</code>, <code>++chow</code>, and eventualy to <code>++dine</code>. We&#39;ve seen most of the cases in <code>++dine</code>, but we haven&#39;t yet looked at the handling of this <code>%buck</code> meal. </p><pre> %buck
450− =. +&gt; ?.(=(%full aut) +&gt; cock) :: finish key exch
451− +&gt;(..la (tock p.fud q.fud r.fud))
452−</pre><p>We send a packet level acknowledgment if we&#39;re finishing a key exchange, else we call <code>++tock</code> to process the acknowledgment. </p><p>This will get a little involved, so if you don&#39;t much care about how exactly an acknowledgment happens, just know that the result gets gifted as a <code>%woot</code> card back to the app who sent it. For those brave souls who wish to see this thing through to the end, it&#39;s once more into the breach. </p><pre> ++ tock :: tock:ho:um:am
453− |= [cop=coop fap=flap cot=@dr] :: e2e ack by hash
454− ^+ +&gt;
455− =^ yoh puz (bick:puz now fap)
456− =. +&gt;.$
457− ?~ p.yoh +&gt;.$
458− =^ hud +&gt;.$
459− (done p.u.p.yoh q.u.p.yoh)
460− ?~ hud +&gt;.$
461− %= +&gt;.$
462− bin
463− :_ bin
464− `boon`[%cake [our her] [[p:sen:gus clon:diz] u.p.yoh] cop u.hud]
465− ==
466− (busk xong:diz q.yoh)
467−</pre><p>We&#39;re going to work through this one a little backwards since it&#39;s mostly fairly simple except the call to <code>++bick:pu</code>. In fact, we&#39;ll just skip <code>++bick</code> for the moment and finish the rest. </p><p>If <code>++bick</code> succesfully acks the message, then we call <code>++done</code>. </p><pre> ++ done :: done:ho:um:am
468− |= [cha=path num=@ud] :: complete outgoing
469− ^- [(unit duct) _+&gt;]
470− =+ rol=(need (~(get by ryl.bah) cha))
471− =+ rix=(~(get by san.rol) num)
472− ?~ rix [~ +&gt;.$]
473− :- rix
474− %_ +&gt;.$
475− ryl.bah
476− (~(put by ryl.bah) cha rol(san (~(del by san.rol) num)))
477− ==
478−</pre><p>This very simply gets the rill (the outgoing counterpart to a race, if you recall), pulls out of the map of outstanding messages the duct over which the original message was sent, and produces this duct while deleting that entry from the map of outstanding messages. </p><p>Going back to <code>++tock</code>, we now have the duct we need to return the result over. We do the very sensible thing and put a <code>%cake</code> boon in the queue to be processed later by <code>++clop</code>. </p><p>In <code>q.yoh</code> we have a list of messages that may need to be sent, which we pass to <code>++busk</code> to send, as usual. When an acknowledgment arrives, that may trigger other messages immediately. This often happens when sending more messages than the width of the logical window since for congestion control reasons another message cannot be sent until some of the earlier ones have been acknowledged. </p><p>We&#39;ll look at the processing of the <code>%cake</code> boon in <code>++clop</code> before we get back to talking about <code>++bick</code>. </p><pre> %cake
479− :_ fox
480− :~ [s.bon %give %woot q.p.bon r.bon]
481− ==
482−</pre><p>We very simply give, along the duct we found above, a <code>%woot</code> card with the ship who sent us the ack and the ack itself. This allows the application to decide what to do about the result. In case of a failure, we usually either resend the message or display it to the user. Sometimes, we recognize the error term and handle it internally. In any case, the decision of how to handle the acknowledgment is entirely up to the application. Our job is done. </p><p>Well, except that we skipped <code>++bick:pu</code>. Let&#39;s go back to that. </p><pre> ++ bick :: bick:pu
483− |= [now=@da fap=flap] :: ack by hash
484− ^- [[p=(unit soup) q=(list rock)] _+&gt;]
485− =+ sun=(~(get by diq) fap)
486− ?~ sun
487− [[~ ~] +&gt;.$]
488− =. diq (~(del by diq) fap)
489− =^ gub +&gt;.$ (bock now u.sun)
490− =^ yop +&gt;.$ (harv now)
491− [[gub yop] +&gt;.$]
492−</pre><p>If you recall, in <code>++whap:pu</code> we created the packet pump&#39;s representation of the message, which included putting the message into <code>diq</code>, which maps from packet hashes to packet sequence numbers. Thus, <code>u.sun</code> is the sequence number of this particular message. </p><p>We delete this message from <code>diq</code> since we have now received an ack for it. We call <code>++bock</code> to perform the ack by sequence number. We call <code>++harv</code> to harvest the packet queue, sending any messages that are now able to be sent. </p><p>In <code>++bock</code>, there are three arms we haven&#39;t seen before: <code>++bine</code>, <code>+wept</code>, and <code>++beet</code>. We&#39;ll describe each of these before we get to <code>++bock</code>. <code>++bine</code> looks scariest. </p><pre> ++ bine :: bine:pu
493− |= [now=@da num=@ud] :: apply ack
494− ^- [(unit soup) _+&gt;]
495− ?~ puq !!
496− ?. =(num p.n.puq)
497− ?: (gth num p.n.puq)
498− =+ lef=$(puq l.puq)
499− [-.lef +.lef(puq [n.puq puq.lef r.puq])]
500− =+ rig=$(puq r.puq)
501− [-.rig +.rig(puq [n.puq l.puq puq.rig])]
502− =: rtt ?. &amp;(liv.q.n.puq =(1 nux.q.n.puq)) rtt
503− =+ gap=(sub now lys.q.n.puq)
504− :: ~&amp; [%bock-trip num (div gap (div ~s1 1.000))]
505− (div (add (mul 2 rtt) gap) 3)
506− nif (sub nif !liv.q.n.puq)
507− ==
508− =+ lez=(dec (need (~(get by pyz) gom.q.n.puq)))
509− =^ gub pyz
510− ?: =(0 lez)
511− [[~ gom.q.n.puq] (~(del by pyz) gom.q.n.puq)]
512− [~ (~(put by pyz) gom.q.n.puq lez)]
513− :- gub
514− +&gt;.$(puq ~(nap to puq))
515−</pre><p>The first few lines are simply looking through the packet queue until we find the correct packet to ack. This is basic queue manipulation that operates directly on the treap structure of the queue. If you understand treap queues, the logic is easy to follow. Otherwise, just trust us that by the time we get to the <code>=:</code>, the packet with sequence number <code>num</code> is on the top of the packet queue (that is, at <code>n.puq</code>). </p><p>We first update the round-trip time. If the packet is either not alive or had to be transmitted more than once, then we don&#39;t have any reliable way of calculating the round-trip time since we&#39;re unsure of exactly which transmission was acknowledged. Otherwise, the round-trip time is the difference between now and when the packet was last sent. We set <code>rtt</code> by a little weighted average where the previous smoothed RTT is weighted twice as much as the RTT of the current packet. Thus, <code>(2*rtt+gap)/3</code>. This gives us a nice smooth RTT that is somewhat resilient to outlier data while still being responsive to our ever-changing world. </p><p>If the packet wasn&#39;t already dead, then we decrement the number of live packets, which may allow more packets to be sent. </p><p>We decrement the number of unacknowledged packets in our <code>pyz</code> for this particular message. If you recall, this was set in <code>++whap</code> to the number of packets required to send a message. </p><p>If that was the last packet in the messge that needed to be acked, then we delete the messgae reference from <code>pyz</code> and produce the id of the message. Otherwise, we simply update <code>pyz</code> with the new number of unacked messages. In either case, we remove the packet from the packet queue. </p><pre> ++ wept :: wept:pu
516− |= [fip=@ud lap=@ud] :: fip thru lap-1
517− =&lt; abet =&lt; apse
518− |%
519− ++ abet +&gt;.$
520− ++ apse
521− ^+ .
522− ?~ puq .
523− ?: (lth p.n.puq fip) ?~(l.puq . left)
524− ?: (gte p.n.puq lap) ?~(r.puq . rigt)
525− =&gt; rigt =&lt; left
526− ?&gt; ?=(^ puq)
527− ?.(liv.q.n.puq . .(nif (dec nif), liv.q.n.puq |))
528− ::
529− ++ left
530− ?&gt; ?=(^ puq)
531− ^+(. =+(lef=apse(puq l.puq) lef(puq [n.puq puq.lef r.puq])))
532− ++ rigt
533− ?&gt; ?=(^ puq)
534− ^+(. =+(rig=apse(puq r.puq) rig(puq [n.puq l.puq puq.rig])))
535− --
536−</pre><p>The algorithm is a simple case of traversing the packet queue. Essentialy, we mark as dead all packets in the queue between <code>fip</code> and <code>(dec lap)</code>. We also update <code>nif</code>, the number of live packets. Lest you mourn too much the passing of these packets, know that they shall soon rise again. Recall that in <code>++bick</code> after the call to <code>++bock</code> we call <code>++harv</code>. This will resend the packets that have just been labeled dead. </p><pre> ++ beet :: beet:pu
537− ^+ . :: advance unacked
538− =- +(nep ?~(foh nus u.foh))
539− ^= foh
540− |- ^- (unit ,@ud)
541− ?~ puq ~
542− ?: (lte p.n.puq nep) $(puq l.puq)
543− =+ rig=$(puq r.puq)
544− ?^(rig rig [~ p.n.puq])
545−</pre><p>Here we search for the next expected packet number. Basically, we search the queue for the leftmost packet whose number is greater than the current <code>nep</code>. If we don&#39;t find any such packet, we just use the total number of packets sent. </p><p>We can now dive into <code>++bock</code>, our last arm. </p><pre> ++ bock :: bock:pu
546− |= [now=@da num=@ud] :: ack by sequence
547− ^- [(unit soup) _+&gt;]
548− =^ gym +&gt; (bine now num)
549− :- gym
550− ?: (gth num nep)
551− =+ cam=(max 2 (div caw 2))
552− :: ~&amp; [%bock-hole num nep cam]
553− beet:(wept(nep num, cag cam, caw cam) nep num)
554− =. caw ?: (lth caw cag) +(caw)
555− (add caw !=(0 (mod (mug now) caw)))
556− ?: =(num nep)
557− :: ~&amp; [%bock-fine num nif caw cag]
558− beet
559− :: ~&amp; [%bock-fill num nif caw cag]
560− +&gt;.$
561−</pre><p>First, we call <code>++bine</code> to apply the ack to the packet pump information. We produce <code>gym</code>, which, if it exists, is the id of the packet that was acked. If we received an ack for a packet later than the one we expected, then we halve the logical packet window and kill all the earlier packets so that they may be resent. </p><p>Otherwise, we possibly increase the congestion window. If the window is less than the congestion threshold, then we increment the size of the window. Otherwise, we only increment one out of every <code>caw</code> times. </p><p>If we received an ack for the packet we expected, then we simply advance <code>nep</code> with <code>++beet</code>. If we received an ack for a packet earlier than we expected, we do nothing. </p><p>It may be hard to believe, but we are, in fact, done. The message has been sent, received, acknowledged, and the acknowledgment has been returned to the original sender. We hope it&#39;s clear that, while the process has been somewhat involved, the algorithms are not all that complicated. If you&#39;ve read this far, you know <code>%ames</code>. The only other code involves initialization, timeouts, and the like. </p><p>Below, we give detailed reference documentation for the data models involved. </p><h2 id="data-models-">Data Models </h2><h3 id="--sufi-ames--domestic-host-"><code>++sufi:ames</code>, domestic host </h3><pre> ++ sufi :: domestic host
562− $: hoy=(list ship) :: hierarchy
563− val=wund :: private keys
564− law=will :: server will
565− seh=(map hand ,[p=ship q=@da]) :: key cache
566− hoc=(map ship dore) :: neighborhood
567− == ::
568−</pre><p>This is the security state of a domestic server. </p><p><code>hoy</code> is a list of the ships directly above us in the hierarchy of ships. For example, for <code>~hoclur-bicrel</code>, this would be <code>~tasruc</code> and <code>~tug</code>. See <code>++sein:title</code>. </p><p><code>val</code> is a list of our private keys. </p><p><code>law</code> is our certificate, which is a list of the XXX </p><p><code>seh</code> </p><p><code>hoc</code> is a map of ships to <code>++dore:ames</code>. The stores all the security information about foreign ships. The keys to this map are the neighbors (ships we have been in contact with) of this domestic server. </p><h3 id="--wund-ames--private-keys-"><code>++wund:ames</code>, private keys </h3><pre> ++ wund (list ,[p=life q=ring r=acru]) :: mace in action
569−</pre><p>This is a list of our own private keys, indexed by life. The key itself is the <code>++ring</code>, and the <code>++acru:ames</code> is the encryption engine. We generate the <code>++acru:ames</code> from the private key by calling <code>++weur</code>. Thus, we can at any time regenerate our <code>++wund:ames</code> from a <code>++mace:ames</code>. The current crypto is at the head of the list and can be accessed with <code>++sen:as:go</code>. </p><h3 id="--ring--private-key-"><code>++ring</code>, private key </h3><pre> ++ ring ,@ :: private key
570−</pre><p>This is a private key. The first byte is reserved to identify the type of cryptography. Lower-case means public key, upper-case means public key, and the letter identifies which <code>++acru:ames</code> to use. </p><h3 id="--pass--public-key-"><code>++pass</code>, public key </h3><pre> ++ pass ,@ :: public key
571−</pre><p>This is a public key. The first byte is reserved to identify the type of cryptography. Lower-case means public key, upper-case means public key, and the letter identifies which <code>++acru:ames</code> to use. </p><h3 id="--mace-ames--private-secrets-"><code>++mace:ames</code>, private secrets </h3><pre> ++ mace (list ,[p=life q=ring]) :: private secrets
572−</pre><p>This is a list of the our private keys, indexed by life. From this we can generate a <code>++wund:ames</code> for actual use. </p><h3 id="--skin-ames--encoding-stem-"><code>++skin:ames</code>, encoding stem </h3><pre> ++ skin ?(%none %open %fast %full) :: encoding stem
573−</pre><p>This defines the type of encryption used for each message. <code>%none</code> refers to messages sent in the clear, <code>%open</code> refers to signed messages, <code>%full</code> refers to sealed messages, and <code>%fast</code> refers to symmetrically encrypted messages. See <code>++acru:ames</code> for details. </p><h3 id="--acru-ames--asymmetric-cryptosuite-"><code>++acru:ames</code>, asymmetric cryptosuite </h3><pre> ++ acru :: asym cryptosuite
574− $_ ^? |% :: opaque object
575− ++ as ^? :: asym ops
576− |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a
577− ++ sign |=([a=@ b=@] _@) :: certify as us
578− ++ sure |=([a=@ b=@] *(unit ,@)) :: authenticate from us
579− ++ tear |= [a=pass b=@] :: accept from a
580− *(unit ,[p=@ q=@]) ::
581− -- ::
582− ++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft
583− ++ dy |+([a=@ b=@] _@) :: symmetric de, hard
584− ++ en |+([a=@ b=@] _@) :: symmetric en
585− ++ ex ^? :: export
586− |% ++ fig _@uvH :: fingerprint
587− ++ pac _@uvG :: default passcode
588− ++ pub *pass :: public key
589− ++ sec *ring :: private key
590− --
591− ++ nu ^? :: reconstructors
592− |% ++ pit |=([a=@ b=@] ^?(..nu)) :: from [width seed]
593− ++ nol |=(a=@ ^?(..nu)) :: from naked ring
594− ++ com |=(a=@ ^?(..nu)) :: from naked pass
595− --
596− --
597−</pre><p>This is an opaque interface for a general asymmetric cryptosuite. Any form of asymmetric cryptography can be dropped in to be used instead of the default. Right now, there is one cryptosuite: <code>++crub:crypto:crypto</code>, which is elliptic-curve cryptography. </p><h4 id="--as-acru-ames--asymmetric-operations-"><code>++as:acru:ames</code>, asymmetric operations </h4><pre> ++ as ^? :: asym ops
598− |% ++ seal |=([a=pass b=@ c=@] _@) :: encrypt to a
599− ++ sign |=([a=@ b=@] _@) :: certify as us
600− ++ sure |=([a=@ b=@] *(unit ,@)) :: authenticate from us
601− ++ tear |= [a=pass b=@] :: accept from a
602− *(unit ,[p=@ q=@]) ::
603− -- ::
604−</pre><p>This is the core that defines the standard asymmetric cryptography operations. </p><p><code>++seal:as:acru:ames</code> allows us to send a message encrypted with someone&#39;s public key so that only they may read it. If Alice seals a message with Bob&#39;s public key, then she can be sure that Bob is the only one who can read it. This is associated with the <code>++skin:ames</code> <code>%full</code>. </p><p><code>++sign:as:acru:ames</code> allows us to sign a message with our private key so that others can verify that we sent the message. If Alice signs a message with her private key, then Bob can verify with her public key that it was indeed Alice who sent it. This is associated with the <code>++skin:ames</code> <code>%open</code>. </p><p><code>++sure:as:acru:ames</code> is the dual to <code>++sign:as:acru:ames</code>. It allows us to verify that a message we have received is indeed from the claimed sender. If Alice sends a message with her private key, then Bob can use this arm to verify that it was indeed Alice who sent it. This is associated with the <code>++skin:ames</code> <code>%open</code>. </p><p><code>++tear:as:acru:ames</code> is the dual to <code>++seal:as:acru:ames</code>. It allows us to read a message that we can be sure is only read by us. If Alice seals a message with Bob&#39;s public key, then Bob can use this arm to read it. This is associated with the <code>++skin:ames</code> <code>%full</code>. </p><h4 id="--de-acru-ames----dy-acru-ames--and---en-acru-ames--symmetric-encryption-decryption-"><code>++de:acru:ames</code>, <code>++dy:acru:ames</code>, and <code>++en:acru:ames</code>, symmetric encryption/decryption </h4><pre> ++ de |+([a=@ b=@] *(unit ,@)) :: symmetric de, soft
605− ++ dy |+([a=@ b=@] _@) :: symmetric de, hard
606− ++ en |+([a=@ b=@] _@) :: symmetric en
607−</pre><p>Symmetric encryption is associated with the <code>++skin:ames</code> <code>%fast</code>. </p><p><code>++de:acru:ames</code> decrypts a message with a symmetric key, returning <code>~</code> on failure and <code>[~ u=data]</code> on success. </p><p><code>++dy:acru:ames</code> decrypts a message with a symmetric key, crashing on failure. This should almost always be defined as, and should always be semantically equivalent to, <code>(need (de a b))</code>. </p><p><code>++en:acru:ames</code> encrypts a message with a symmetric key. </p><h4 id="--ex-acru-ames--exporting-data-"><code>++ex:acru:ames</code>, exporting data </h4><pre> ++ ex ^? :: export
608− |% ++ fig _@uvH :: fingerprint
609− ++ pac _@uvG :: default passcode
610− ++ pub *pass :: public key
611− ++ sec *ring :: private key
612− --
613−</pre><p><code>++fig:ex:acru:ames</code> is our fingerprint, usually a hash of our public key. This is used, for example, in <code>++zeno</code>, where every carrier owner&#39;s fingerprint is stored so that we can ensure that carriers are indeed owned by their owners </p><p><code>++pac:ex:acru:ames</code> is our default passcode, which is unused at present. </p><p><code>++pub:ex:acru:ames</code> is the <code>++pass</code> form of our public key. </p><p><code>++sec:ex:acru:ames</code> is the <code>++ring</code> form of our private key. </p><h4 id="--nu-acru-ames--reconstructors-"><code>++nu:acru:ames</code>, reconstructors </h4><pre> ++ nu ^? :: reconstructors
614− |% ++ pit |=([a=@ b=@] ^?(..nu)) :: from [width seed]
615− ++ nol |=(a=@ ^?(..nu)) :: from naked ring
616− ++ com |=(a=@ ^?(..nu)) :: from naked pass
617− --
618−</pre><p>These arms allow us to reconstruct a <code>++acru:ames</code> from basic data. </p><p><code>++pit:nu:acru:ames</code> constructs a <code>++acru:ames</code> from the width of our intended key and seed entropy. This is usually used in the initial construction of the <code>++acru:ames</code>. </p><p><code>++nol:nu:acru:ames</code> constructs a <code>++acru:ames</code> from a “naked ring”, meaning a <code>++ring</code> without the initial byte identifying the type of crypto. </p><p><code>++com:nu:acru:ames</code> constructs a <code>++acru:ames</code> from a “naked pass”, meaning a <code>++ring</code> without the initial byte identifying the type of crypto. </p><h3 id="--will--certificate-"><code>++will</code>, certificate </h3><pre> ++ will (list deed) :: certificate
619−</pre><p>This is a list of deeds associated with the current ship. There should be an item in this list for every ship from this point up in the hierarchy times the number of lives that each ship has had. For example, ~hoclur-bicrel may have a will with three items: one for itself, one for ~tasruc (who issued ~hoclur-bicrel&#39;s deed) and one for ~tug (who issued ~tasruc&#39;s deed). </p><h3 id="--deed--identity-"><code>++deed</code>, identity </h3><pre> ++ deed ,[p=@ q=step r=?] :: sig, stage, fake?
620−</pre><p><code>p</code> is the signature of a particular deed, which is a signed copy of <code>q</code>. </p><p><code>q</code> is the stage in the identity. </p><p><code>r</code> is true if we&#39;re working on a fake network, where we don&#39;t check that the carrier fingerprints are correct. This allows us to create fake networks for development without interfering with the real network. </p><h3 id="--step-ames--identity-stage-"><code>++step:ames</code>, identity stage </h3><pre> ++ step ,[p=bray q=gens r=pass] :: identity stage
621−</pre><p>This is a single stage in our identity. Thus, this is specific to a single life in a single ship. Everything in here may change between lives. </p><p><code>p</code> </p><p><code>q</code> </p><p><code>r</code> is the public key for this stage in the identity. </p><h3 id="--bray-ames-"><code>++bray:ames</code> </h3><pre> ++ bray ,[p=life q=(unit life) r=ship s=@da] :: our parent us now
622−</pre><p>XXX </p><h3 id="--gens-ames--general-identity-"><code>++gens:ames</code>, general identity </h3><pre> ++ gens ,[p=lang q=gcos] :: general identity
623−</pre><p><code>p</code> is the IETF language code for the preferred language of this identity. This is unused at the moment, but in the future text should be localized based on this. </p><p><code>q</code> is the description of the ship. </p><h3 id="--gcos-ames--identity-description-"><code>++gcos:ames</code>, identity description </h3><pre> ++ gcos :: id description
624− $% [%czar ~] :: 8-bit ship
625− [%duke p=what] :: 32-bit ship
626− [%earl p=@t] :: 64-bit ship
627− [%king p=@t] :: 16-bit ship
628− [%pawn p=(unit ,@t)] :: 128-bit ship
629− == ::
630−</pre><p>This is the description of the identity of a ship. Most types of identity have a <code>@t</code> field, which is their human-readable name. The identity of a <code>%duke</code> is more involved. </p><p>A <code>%czar</code>, a carrier, is a ship with an 8-bit address. Thus, there are only 256 carriers. These are at the top of the namespace hierarchy, and the fingerprint of each carrier is stored in <code>++zeno</code>. These are the “senators” of Urbit. </p><p>A <code>%king</code>, a cruiser, is a ship with a 16-bit address. Thus, there are 65,536 cruisers. Each carrier may issue 256 cruisers. These are the infrastructure of Urbit. </p><p>A <code>%duke</code>, a destroyer, is a ship with a 32-bit address. Thus, there are 4,294,967,296 destroyers. Each cruiser may issue 65,536 cruisers. These are the individuals of Urbit. </p><p>A <code>%earl</code>, a yacht, is a ship with a 64-bit address. Thus, there are 18,446,744,073,709,551,616 yachts. Each destroyer may issue 4,294,967,296 yachts. These are the devices of Urbit. </p><p>A <code>%pawn</code>, a submarine, is a ship with a 128-bit address. Thus, there are a lot of submarines. The chance of random name collision is negligible, so submarines are not issued by any ship. They must simply assert their presence, and they are all considered children of ~zod. This is the underworld of Urbit, where anonymity reigns supreme. </p><h3 id="--what-ames--logical-destroyer-identity-"><code>++what:ames</code>, logical destroyer identity </h3><pre> ++ what :: logical identity
631− $% [%anon ~] :: anonymous
632− [%lady p=whom] :: female person ()
633− [%lord p=whom] :: male person []
634− [%punk p=sect q=@t] :: opaque handle &quot;&quot;
635− == ::
636−</pre><p>This is the logical identity of a destroyer. </p><p>A <code>%anon</code> is a completely anonymous destroyer. The difference between this and a submarine is that a submarine is ephemeral while a <code>%anon</code> destroyer is not. Thus, we may not know who ~hoclur-bicrel is, but we do know that it&#39;s always the same person. </p><p>A <code>%lady</code> is a female person. The name used here should be a real name. </p><p>A <code>%lord</code> is a male person. The name used here should be a real name. </p><p>A <code>%punk</code> is a person who is identified only by a handle. </p><h3 id="--whom-ames--real-person-"><code>++whom:ames</code>, real person </h3><pre> ++ whom ,[p=@ud q=govt r=sect s=name] :: year/govt/id
637−</pre><p>Ths is the information associated with a real person. It is mostly information that could be observed with the briefest of interactions. </p><p><code>p</code> is the birth year. </p><p><code>q</code> is the location of a user, usually of the form “country/zip”. </p><p><code>r</code> is the sect of the user. </p><p><code>s</code> is the real name of the person. </p><h3 id="--govt-ames-"><code>++govt:ames</code> </h3><pre> ++ govt path :: country/postcode
638−</pre><p>This is the location of the user, usually of the form “country/zip”. </p><h3 id="--sect-ames-"><code>++sect:ames</code> </h3><pre> ++ sect ?(%black %blue %red %orange %white) :: banner
639−</pre><p>XXX </p><h3 id="--name-ames-"><code>++name:ames</code> </h3><pre> ++ name ,[p=@t q=(unit ,@t) r=(unit ,@t) s=@t] :: first mid/nick last
640−</pre><p>This is the given name, possible middle name/initial, possible nickname, and surname of a user. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/behn/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="behn-">Behn </h1><p>Our simple timer. </p><p>It allows vanes and applications to set and timer events, which are managed in a simple priority queue. <code>%behn</code> produces effects to start the unix timer, and when the requested <code>%behn</code> passes, unix sends wake events to <code>%behn</code>, which time routes back to original sender. We don&#39;t guarantee that a timer event will happen at exactly the <code>%behn</code> it was set for, or even that it&#39;ll be particularly close. A timer event is a request to not be woken until after the given time. </p><p><code>%eyre</code> uses <code>%behn</code> for timing out sessions, and <code>%clay</code> uses <code>%behn</code> for keeping track of time-specified file requests. <code>%ames</code> should probably use <code>%behn</code> to keep track of things like network timeouts and retry timing, but it currently uses its own alarm system. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/clay/index.htmldeleted−761
@@ -1,761 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="clay-">Clay </h1><p>Our filesystem. </p><p><code>%clay</code> is version-controlled, referentially-transparent, and global. While this filesystem is stored in <code>%clay</code>, it is mirrored to Unix for convenience. Unix tells <code>%clay</code>s whenever a file changes in the Unix copy of the filesystem so that the change may be applied. <code>%clay</code> tells unix whenever an app or vane changes the filesystem so that the change can be effected in Unix. Apps and vanes may use <code>%clay</code> to write to the filesystem, query it, and subscribe to changes in it. Ford and gall use <code>%clay</code> to serve up apps and web pages. </p><p><code>%clay</code> includes three components. First is the filesystem/version control algorithms, which are mostly defined in <code>++ze</code> and <code>++zu</code> in zuse. Second is the write, query, and subscription logic. Finally, there is the logic for communicating requests to, and receiving requests from, foreign ships. </p><h2><div id="architecture">Architecture</div></h2><p>Clay is the primary filesystem for the arvo operating system, which is the core of an urbit. The architecture of clay is intrinsically connected with arvo, but we assume no knowledge of either arvo or urbit. We will point out only those features of arvo that are necessary for an understanding of clay, and we will do so only when they arise. </p><p>The first relevant feature of arvo is that it is a deterministic system where input and output are defined as a series of events and effects. The state of arvo is simply a function of its event log. None of the effects from an event are emitted until the event is entered in the log and persisted, either to disk or another trusted source of persistence, such as a Kafka cluster. Consequently, arvo is a single-level store: everything in its state is persistent. </p><p>In a more traditional OS, everything in RAM can be erased at any time by power failure, and is always erased on reboot. Thus, a primary purpose of a filesystem is to ensure files persist across power failures and reboots. In arvo, both power failures and reboots are special cases of suspending computation, which is done safely since our event log is already persistent. Therefore, clay is not needed in arvo for persistence. Why, then, do we have a filesystem? There are two answers to this question. </p><p>First, clay provides a filesystem tree, which is a convenient user interface for some applications. Unix has the useful concept of virtual filesystems, which are used for everything from direct access to devices, to random number generators, to the /proc tree. It is easy and intuitive to read from and write to a filesystem tree. </p><p>Second, clay has a distributed revision control system baked into it. Traditional filesystems are not revision controlled, so userspace software -- such as git -- is written on top of them to do so. clay natively provides the same functionality as modern DVCSes, and more. </p><p>clay has two other unique properties that we&#39;ll cover later on: it supports typed data and is referentially transparent. </p><h3 id="revision-control-">Revision Control </h3><p>Every urbit has one or more “desks”, which are independently revision-controlled branches. Each desk contains its own mark definitions, apps, doc, and so forth. </p><p>Traditionally, an urbit has at least a base and a home desk. The base desk has all the system software from the distribution. the home desk is a fork of base with all the stuff specific to the user of the urbit. </p><p>A desk is a series of numbered commits, the most recent of which represents the current state of the desk. A commit is composed of (1) an absolute time when it was created, (2) a list of zero or more parents, and (3) a map from paths to data. </p><p>Most commits have exactly one parent, but the initial commit on a desk may have zero parents, and merge commits have more than one parent. </p><p>The non-meta data is stored in the map of paths to data. It&#39;s worth noting that no constraints are put on this map, so, for example, both /a/b and /a/b/c could have data. This is impossible in a traditional Unix filesystem since it means that /a/b is both a file and a directory. Conventionally, the final element in the path is its mark -- much like a filename extension in Unix. Thus, /doc/readme.md in Unix is stored as /doc/readme/md in urbit. </p><p>The data is not stored directly in the map; rather, a hash of the data is stored, and we maintain a master blob store. Thus, if the same data is referred to in multiple commits (as, for example, when a file doesn&#39;t change between commits), only the hash is duplicated. </p><p>In the master blob store, we either store the data directly, or else we store a diff against another blob. The hash is dependent only on the data within and not on whether or not it&#39;s stored directly, so we may on occasion rearrange the contents of the blob store for performance reasons. </p><p>Recall that a desk is a series of numbered commits. Not every commit in a desk must be numbered. For example, if the base desk has had 50 commits since home was forked from it, then a merge from base to home will only add a single revision number to home, although the full commit history will be accessible by traversing the parentage of the individual commits. </p><p>We do guarantee that the first commit is numbered 1, commits are numbered consecutively after that (i.e. there are no “holes”), the topmost commit is always numbered, and every numbered commit is an ancestor of every later numbered commit. </p><p>There are three ways to refer to particular commits in the revision history. Firstly, one can use the revision number. Secondly, one can use any absolute time between the one numbered commit and the next (inclusive of the first, exclusive of the second). Thirdly, every desk has a map of labels to revision numbers. These labels may be used to refer to specific commits. </p><p>Additionally, clay is a global filesystem, so data on other urbit is easily accessible the same way as data on our local urbit. In general, the path to a particular revision of a desk is /~urbit-name/desk-name/revision. Thus, to get /try/readme/md from revision 5 of the home desk on ~sampel-sipnym, we refer to /~sampel-sipnym/home/5/try/readme/md. Clay&#39;s namespace is thus global and referentially transparent. </p><p>XXX reactivity here? </p><h3 id="a-typed-filesystem-">A Typed Filesystem </h3><p>Since clay is a general filesystem for storing data of arbitrary types, in order to revision control correctly it needs to be aware of types all the way through. Traditional revision control does an excellent job of handling source code, so for source code we act very similar to traditional revision control. The challenge is to handle other data similarly well. </p><p>For example, modern VCSs generally support “binary files”, which are files for which the standard textual diffing, patching, and merging algorithms are not helpful. A “diff” of two binary files is just a pair of the files, “patching” this diff is just replacing the old file with the new one, and “merging” non-identical diffs is always a conflict, which can&#39;t even be helpfully annotated. Without knowing anything about the structure of a blob of data, this is the best we can do. </p><p>Often, though, “binary” files have some internal structure, and it is possible to create diff, patch, and merge algorithms that take advantage of this structure. An image may be the result of a base image with some set of operations applied. With algorithms aware of this set of operations, not only can revision control software save space by not having to save every revision of the image individually, these transformations can be made on parallel branches and merged at will. </p><p>Suppose Alice is tasked with touching up a picture, improving the color balance, adjusting the contrast, and so forth, while Bob has the job of cropping the picture to fit where it&#39;s needed and adding textual overlay. Without type-aware revision control, these changes must be made serially, requiring Alice and Bob to explicitly coordinate their efforts. With type-aware revision control, these operations may be performed in parallel, and then the two changesets can be merged programmatically. </p><p>Of course, even some kinds of text files may be better served by diff, patch, and merge algorithms aware of the structure of the files. Consider a file containing a pretty-printed JSON object. Small changes in the JSON object may result in rather significant changes in how the object is pretty-printed (for example, by addding an indentation level, splitting a single line into multiple lines). </p><p>A text file wrapped at 80 columns also reacts suboptimally with unadorned Hunt-McIlroy diffs. A single word inserted in a paragraph may push the final word or two of the line onto the next line, and the entire rest of the paragraph may be flagged as a change. Two diffs consisting of a single added word to different sentences may be flagged as a conflict. In general, prose should be diffed by sentence, not by line. </p><p>As far as the author is aware, clay is the first generalized, type-aware revision control system. We&#39;ll go into the workings of this system in some detail. </p><h3 id="marks-">Marks </h3><p>Central to a typed filesystem is the idea of types. In clay, we call these “marks”. A mark is a file that defines a type, conversion routines to and from the mark, and diff, patch, and merge routines. </p><p>For example, a <code>%txt</code> mark may be a list of lines of text, and it may include conversions to <code>%mime</code> to allow it to be serialized and sent to a browswer or to the unix filesystem. It will also include Hunt-McIlroy diff, patch, and merge algorithms. </p><p>A <code>%json</code> mark would be defined as a json object in the code, and it would have a parser to convert from <code>%txt</code> and a printer to convert back to <code>%txt</code>. The diff, patch, and merge algorithms are fairly straightforward for json, though they&#39;re very different from the text ones. </p><p>More formally, a mark is a core with three arms, <code>++grab</code>, <code>++grow</code>, and <code>++grad</code>. In <code>++grab</code> is a series of functions to convert from other marks to the given mark. In <code>++grow</code> is a series of functions to convert from the given mark to other marks. In <code>++grad</code> is <code>++diff</code>, <code>++pact</code>, <code>++join</code>, and <code>++mash</code>. </p><p>The types are as follows, in an informal pseudocode: </p><pre> ++ grab:
2− ++ mime: &lt;mime&gt; -&gt; &lt;mark-type&gt;
3− ++ txt: &lt;txt&gt; -&gt; &lt;mark-type&gt;
4− ...
5− ++ grow:
6− ++ mime: &lt;mark-type&gt; -&gt; &lt;mime&gt;
7− ++ txt: &lt;mark-type&gt; -&gt; &lt;txt&gt;
8− ...
9− ++ grad
10− ++ diff: (&lt;mark-type&gt;, &lt;mark-type&gt;) -&gt; &lt;diff-type&gt;
11− ++ pact: (&lt;mark-type&gt;, &lt;diff-type&gt;) -&gt; &lt;mark-type&gt;
12− ++ join: (&lt;diff-type&gt;, &lt;diff-type&gt;) -&gt; &lt;diff-type&gt; or NULL
13− ++ mash: (&lt;diff-type&gt;, &lt;diff-type&gt;) -&gt; &lt;diff-type&gt;
14−</pre><p>These types are basically what you would expect. Not every mark has each of these functions defined -- all of them are optional in the general case. </p><p>In general, for a particular mark, the <code>++grab</code> and <code>++grow</code> entries (if they exist) should be inverses of each other. </p><p>In <code>++grad</code>, <code>++diff</code> takes two instances of a mark and produces a diff of them. <code>++pact</code> takes an instance of a mark and patches it with the given diff. <code>++join</code> takes two diffs and attempts to merge them into a single diff. If there are conflicts, it produces null. <code>++mash</code> takes two diffs and forces a merge, annotating any conflicts. </p><p>In general, if <code>++diff</code> called with A and B produces diff D, then <code>++pact</code> called with A and D should produce B. Also, if <code>++join</code> of two diffs does not produce null, then <code>++mash</code> of the same diffs should produce the same result. </p><p>Alternately, instead of <code>++diff</code>, <code>++pact</code>, <code>++join</code>, and <code>++mash</code>, a mark can provide the same functionality by defining <code>++sted</code> to be the name of another mark to which we wish to delegate the revision control responsibilities. Then, before running any of those functions, clay will convert to the other mark, and convert back afterward. For example, the <code>%hoon</code> mark is revision-controlled in the same way as <code>%txt</code>, so its <code>++grad</code> is simply <code>++sted %txt</code>. Of course, <code>++txt</code> must be defined in <code>++grow</code> and <code>++grab</code> as well. </p><p>Every file in clay has a mark, and that mark must have a fully-functioning <code>++grad</code>. Marks are used for more than just clay, and other marks don&#39;t need a <code>++grad</code>, but if a piece of data is to be saved to clay, we must know how to revision-control it. </p><p>Additionally, if a file is to be synced out to unix, then it must have conversion routines to and from the <code>%mime</code> mark. </p><h2 id="using-clay-">Using clay </h2><h3 id="reading-and-subscribing-">Reading and Subscribing </h3><p>When reading from Clay, there are three types of requests. A <code>%sing</code> request asks for data at single revsion. A <code>%next</code> request asks to be notified the next time there&#39;s a change to given file. A <code>%many</code> request asks to be notified on every change in a desk for a range of changes. </p><p>For <code>%sing</code> and <code>%next</code>, there are generally three things to be queried. A <code>%u</code> request simply checks for the existence of a file at a path. A <code>%x</code> request gets the data in the file at a path. A <code>%y</code> request gets a hash of the data in the file at the path combined with all its children and their data. Thus, <code>%y</code> of a node changes if it or any of its children change. </p><p>A <code>%sing</code> request is fulfilled immediately if possible. If the requested revision is in the future, or is on another ship for which we don&#39;t have the result cached, we don&#39;t respond immediately. If the requested revision is in the future, we wait until the revision happens before we respond to the request. If the request is for data on another ship, we pass on the request to the other ship. In general, Clay subscriptions, like most things in Urbit, aren&#39;t guaranteed to return immediately. They&#39;ll return when they can, and they&#39;ll do so in a referentially transparent manner. </p><p>A <code>%next</code> request checks query at the given revision, and it produces the result of the query the next time it changes, along with the revsion number when it changes. Thus, a <code>%next</code> of a <code>%u</code> is triggered when a file is added or deleted, a <code>%next</code> of a <code>%x</code> is triggered when a file is added, deleted, or changed, and a <code>%next</code> of a <code>%y</code> is triggered when a file or any of its children is added, deleted, or changed. </p><p>A <code>%many</code> request is triggered every time the given desk has a new revision. Unlike a <code>%next</code>, a <code>%many</code> has both a start and an end revsion, after which it stops returning. For <code>%next</code>, a single change is reported, and if the caller wishes to hear of the next change, it must resubscribe. For <code>%many</code>, every revsion from the start to the end triggers a response. Since a <code>%many</code> request doesn&#39;t ask for any particular data, there aren&#39;t <code>%u</code>, <code>%x</code>, and <code>%y</code> versions for it. </p><h3 id="unix-sync-">Unix sync </h3><p>One of the primary functions of clay is as a convenient user interface. While tools exist to use clay from within urbit, it&#39;s often useful to be able to treat clay like any other filesystem from the Unix perspective -- to “mount” it, as it were. </p><p>From urbit, you can run <code>|mount /path/to/directory %mount-point</code>, and this will mount the given clay directory to the mount-point directory in Unix. Every file is converted to <code>%mime</code> before it&#39;s written to Unix, and converted back when read from Unix. The entire directory is watched (a la Dropbox), and every change is auto-committed to clay. </p><h3 id="merging-">Merging </h3><p>Merging is a fundamental operation for a distributed revision control system. At their root, clay&#39;s merges are similar to git&#39;s, but with some additions to accomodate typed data. There are seven different merge strategies. </p><p>Throughout our discussion, we&#39;ll say that the merge is from Alice&#39;s desk to Bob&#39;s. Recall that a commit is a date (for all new commits this will be the current date), a list of parents, and the data itself. </p><p>A <code>%init</code> merge should be used iff it&#39;s the first commit to a desk. The head of Alice&#39;s desk is used as the number 1 commit to Bob&#39;s desk. Obviously, the ancestry remains intact through traversing the parentage of the commit even though previous commits are not numbered for Bob&#39;s desk. </p><p>A <code>%this</code> merge means to keep what&#39;s in Bob&#39;s desk, but join the ancestry. Thus, the new commit has the head of each desk as parents, but the data is exactly what&#39;s in Bob&#39;s desk. For those following along in git, this is the &#39;ours&#39; merge strategy, not the &#39;--ours&#39; option to the &#39;recursive&#39; merge strategy. In other words, even if Alice makes a change that does not conflict with Bob, we throw it away. It&#39;s Bob&#39;s way or the highway. </p><p>A <code>%that</code> merge means to take what&#39;s in Alice&#39;s desk, but join the ancestry. This is the reverse of <code>%this</code>. </p><p>A <code>%fine</code> merge is a “fast-forward” merge. This succeeds iff one head is in the ancestry of the other. In this case, we use the descendant as our new head. </p><p>For <code>%meet</code>, <code>%mate</code>, and <code>%meld</code> merges, we first find the most recent common ancestor to use as our merge base. If we have no common ancestors, then we fail. If we have more than one most recent common ancestor, then we have a criss-cross situation, which should be handled delicately. At present, we delicately throw up our hands and give up, but something akin to git&#39;s &#39;recursive&#39; strategy should be implemented in the future. </p><p>There&#39;s a functional inclusion ordering on <code>%fine</code>, <code>%meet</code>, <code>%mate</code>, and <code>%meld</code> such that if an earlier strategy would have succeeded, then every later strategy will produce the same result. Put another way, every earlier strategy is the same as every later strategy except with a restricted domain. </p><p>A <code>%meet</code> merge only succeeds if the changes from the merge base to Alice&#39;s head (hereafter, “Alice&#39;s changes”) are in different files than Bob&#39;s changes. In this case, the parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files. </p><p>A <code>%mate</code> merge attempts to merge changes to the same file when both Alice and bob change it. If the merge is clean, we use it; otherwise, we fail. A merge between different types of changes -- for example, deleting a file vs changing it -- is always a conflict. If we succeed, the parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files plus the merged files. </p><p>A <code>%meld</code> merge will succeed even if there are conflicts. If there are conflicts in a file, then we use the merge base&#39;s version of that file, and we produce a set of files with conflicts. The parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files plus the successfully merged files plus the merge base&#39;s version of the conflicting files. </p><p>That&#39;s the extent of the merge options in clay proper. In userspace there&#39;s a final option <code>%auto</code>, which is the most common. <code>%auto</code> checks to see if Bob&#39;s desk exists, and if it doesn&#39;t we use a <code>%init</code> merge. Otherwise, we progressively try <code>%fine</code>, <code>%meet</code>, and <code>%mate</code> until one succeeds. </p><p>If none succeed, we merge Bob&#39;s desk into a scratch desk. Then, we merge Alice&#39;s desk into the scratch desk with the <code>%meld</code> option to force the merge. For each file in the produced set of conflicting files, we call the <code>++mash</code> function for the appropriate mark, which annotates the conflicts if we know how. </p><p>Finally, we display a message to the user informing them of the scratch desk&#39;s existence, which files have annotated conflicts, and which files have unannotated conflicts. When the user has resolved the conflicts, they can merge the scratch desk back into Bob&#39;s desk. This will be a <code>%fine</code> merge since Bob&#39;s head is in the ancestry of the scratch desk. </p><h3 id="autosync-">Autosync </h3><p>Tracking and staying in sync with another desk is another fundamental operation. We call this “autosync”. This doesn&#39;t mean simply mirroring a desk, since that wouldn&#39;t allow local changes. We simply want to apply changes as they are made upstream, as long as there are no conflicts with local changes. </p><p>This is implemented by watching the other desk, and, when it has changes, merging these changes into our desk with the usual merge strategies. </p><p>Note that it&#39;s quite reasonable for two desks to be autosynced to each other. This results in any change on one desk being mirrored to the other and vice versa. </p><p>Additionally, it&#39;s fine to set up an autosync even if one desk, the other desk, or both desks do not exist. The sync will be activated when the upstream desk comes into existence and will create the downstream desk if needed. </p><h2><div id="commentary">Commentary</div></h2><p>The first part of this section will be reference documentation for the data types used by our filesystem. In fact, as a general guide, we recommend reading and attempting to understand the data structures used in any Hoon code before you try to read the code itself. Although complete understanding of the data structures is impossible without seeing them used in the code, an 80% understanding greatly clarifies the code. As another general guide, when reading Hoon, it rarely pays off to understand every line of code when it appears. Try to get the gist of it, and then move on. The next time you come back to it, it&#39;ll likely make a lot more sense. </p><p>After a description of the data models, we&#39;ll give an overview of the interface that vanes and applications can use to interact with the filesystem. </p><p>Finally, we&#39;ll dive into the code and the algorithms themselves. You know, the fun part. </p><h3 id="data-models-">Data Models </h3><p>As you&#39;re reading through this section, remember you can always come back to this when you run into these types later on. You&#39;re not going to remember everything the first time through, but it is worth reading, or at least skimming, this so that you get a rough idea of how our state is organized. </p><p>The types that are certainly worth reading are <code>++raft</code>, <code>++room</code>, <code>++dome:clay</code>, <code>++ankh:clay</code>, <code>++rung:clay</code>, <code>++rang:clay</code>, <code>++blob:clay</code>, <code>++yaki:clay</code>, and <code>++nori:clay</code> (possibly in that order). All in all, though, this section isn&#39;t too long, so many readers may wish to quickly read through all of it. If you get bored, though, just skip to the next section. You can always come back when you need to. </p><h3 id="--raft--formal-state-"><code>++raft</code>, formal state </h3><pre> ++ raft :: filesystem
15− $: fat=(map ship room) :: domestic
16− hoy=(map ship rung) :: foreign
17− ran=rang :: hashes
18− == ::
19−</pre><p>This is the state of our vane. Anything that must be remembered between calls to clay is stored in this state. </p><p><code>fat</code> is the set of domestic servers. This stores all the information that is specfic to a particular ship on this pier. The keys to this map are the ships on the current pier. all the information that is specific to a particular foreign ship. The keys to this map are all the ships whose filesystems we have attempted to access through clay. </p><p><code>ran</code> is the store of all commits and deltas, keyed by hash. The is where all the “real” data we know is stored; the rest is “just bookkeeping”. </p><h4 id="--room--filesystem-per-domestic-ship-"><code>++room</code>, filesystem per domestic ship </h4><pre> ++ room :: fs per ship
20− $: hun=duct :: terminal duct
21− hez=(unit duct) :: sync duch
22− dos=(map desk dojo) :: native desk
23− == ::
24−</pre><p>This is the representation of the filesystem of a ship on our pier. </p><p><code>hun</code> is the duct we use to send messages to dill to display notifications of filesystem changes. Only <code>%note</code> gifts should be produced along this duct. This is set by the <code>%init</code> kiss. </p><p><code>hez</code>, if present, is the duct we use to send sync messages to unix so that they end up in the pier unix directory. Only <code>%ergo</code> gifts should be producd along this duct. This is set by <code>%into</code> and <code>%invo</code> kisses. </p><p><code>dos</code> is a well-known operating system released in 1981. It is also the set of desks on this ship, mapped to their data. </p><h4 id="--desk--filesystem-branch-"><code>++desk</code>, filesystem branch </h4><pre> ++ desk ,@tas :: ship desk case spur
25−</pre><p>This is the name of a branch of the filesystem. The default desks are “arvo”, “main”, and “try”. More may be created by simply referencing them. Desks have independent histories and states, and they may be merged into each other. </p><h3 id="--dojo--domestic-desk-state-"><code>++dojo</code>, domestic desk state </h3><pre> ++ dojo ,[p=cult q=dome] :: domestic desk state
26−</pre><p>This is the all the data that is specific to a particular desk on a domestic ship. <code>p</code> is the set of subscribers to this desk and <code>q</code> is the data in the desk. </p><h4 id="--cult--subscriptions-"><code>++cult</code>, subscriptions </h4><pre> ++ cult (map duct rave) :: subscriptions
27−</pre><p>This is the set of subscriptions to a particular desk. The keys are the ducts from where the subscriptions requests came. The results will be produced along these ducts. The values are a description of the requested information. </p><h4 id="--rave-clay--general-subscription-request-"><code>++rave:clay</code>, general subscription request </h4><pre> ++ rave :: general request
28− $% [&amp; p=mood] :: single request
29− [| p=moat] :: change range
30− == ::
31−</pre><p>This represents a subscription request for a desk. The request can be for either a single item in the desk or else for a range of changes on the desk. </p><h3 id="--rove--stored-general-subscription-request-"><code>++rove</code>, stored general subscription request </h3><pre> ++ rove (each mood moot) :: stored request
32−</pre><p>When we store a request, we store subscriptions with a little extra information so that we can determine whether new versions actually affect the path we&#39;re subscribed to. </p><h4 id="--mood-clay--single-subscription-request-"><code>++mood:clay</code>, single subscription request </h4><pre> ++ mood ,[p=care q=case r=path] :: request in desk
33−</pre><p>This represents a request for the state of the desk at a particular commit, specfied by <code>q</code>. <code>p</code> specifies what kind of information is desired, and <code>r</code> specifies the path we are requesting. </p><h4 id="--moat-clay--range-subscription-request-"><code>++moat:clay</code>, range subscription request </h4><pre> ++ moat ,[p=case q=case r=path] :: change range
34−</pre><p>This represents a request for all changes between <code>p</code> and <code>q</code> on path <code>r</code>. You will be notified when a change is made to the node referenced by the path or to any of its children. </p><h3 id="--moot--stored-range-subscription-request-"><code>++moot</code>, stored range subscription request </h3><pre> ++ moot ,[p=case q=case r=path s=(map path lobe)] ::
35−</pre><p>This is just a <code>++moat:clay</code> plus a map of paths to lobes. This map represents the data at the node referenced by the path at case <code>p</code>, if we&#39;ve gotten to that case (else null). We only send a notification along the subscription if the data at a new revision is different than it was. </p><h3 id="--care-clay--clay-submode-"><code>++care:clay</code>, clay submode </h3><pre> ++ care ?(%u %v %w %x %y %z) :: clay submode
36−</pre><p>This specifies what type of information is requested in a subscription or a scry. </p><p><code>%u</code> requests the <code>++rang:clay</code> at the current moment. Because this information is not stored for any moment other than the present, we crash if the <code>++case:clay</code> is not a <code>%da</code> for now. </p><p><code>%v</code> requests the <code>++dome:clay</code> at the specified commit. </p><p><code>%w</code> requests the revsion number of the desk. </p><p><code>%x</code> requests the file at a specified path at the specified commit. If there is no node at that path or if the node has no contents (that is, if <code>q:ankh</code> is null), then this produces null. </p><p><code>%y</code> requests a <code>++arch</code> of the specfied commit at the specified path. </p><p><code>%z</code> requests the <code>++ankh</code> of the specified commit at the specfied path. </p><h3 id="--arch--shallow-filesystem-node-"><code>++arch</code>, shallow filesystem node </h3><pre> ++ arch ,[p=@uvI q=(unit ,@uvI) r=(map ,@ta ,~)] :: fundamental node
37−</pre><p>This is analogous to <code>++ankh:clay</code> except that the we have neither our contents nor the ankhs of our children. The other fields are exactly the same, so <code>p</code> is a hash of the associated ankh, <code>u.q</code>, if it exists, is a hash of the contents of this node, and the keys of <code>r</code> are the names of our children. <code>r</code> is a map to null rather than a set so that the ordering of the map will be equivalent to that of <code>r:ankh</code>, allowing efficient conversion. </p><h4 id="--case-clay--specifying-a-commit-"><code>++case:clay</code>, specifying a commit </h4><pre> ++ case :: ship desk case spur
38− $% [%da p=@da] :: date
39− [%tas p=@tas] :: label
40− [%ud p=@ud] :: number
41− == ::
42−</pre><p>A commit can be referred to in three ways: <code>%da</code> refers to the commit that was at the head on date <code>p</code>, <code>%tas</code> refers to the commit labeled <code>p</code>, and <code>%ud</code> refers to the commit numbered <code>p</code>. Note that since these all can be reduced down to a <code>%ud</code>, only numbered commits may be referenced with a <code>++case:clay</code>. </p><h4 id="--dome-clay--desk-data-"><code>++dome:clay</code>, desk data </h4><pre> ++ dome :: project state
43− $: ang=agon :: pedigree
44− ank=ankh :: state
45− let=@ud :: top id
46− hit=(map ,@ud tako) :: changes by id
47− lab=(map ,@tas ,@ud) :: labels
48− == ::
49−</pre><p>This is the data that is actually stored in a desk. </p><p><code>ang</code> is unused and should be removed. </p><p><code>ank</code> is the current state of the desk. Thus, it is the state of the filesystem at revison <code>let</code>. The head of a desk is always a numbered commit. </p><p><code>let</code> is the number of the most recently numbered commit. This is also the total number of numbered commits. </p><p><code>hit</code> is a map of numerical ids to hashes of commits. These hashes are mapped into their associated commits in <code>hut:rang:clay</code>. In general, the keys of this map are exactly the numbers from 1 to <code>let</code>, with no gaps. Of course, when there are no numbered commits, <code>let</code> is 0, so <code>hit</code> is null. Additionally, each of the commits is an ancestor of every commit numbered greater than this one. Thus, each is a descendant of every commit numbered less than this one. Since it is true that the date in each commit (<code>t:yaki</code>) is no earlier than that of each of its parents, the numbered commits are totally ordered in the same way by both pedigree and date. Of course, not every commit is numbered. If that sounds too complicated to you, don&#39;t worry about it. It basically behaves exactly as you would expect. </p><p><code>lab</code> is a map of textual labels to numbered commits. Note that labels can only be applied to numbered commits. Labels must be unique across a desk. </p><h4 id="--ankh--filesystem-node-"><code>++ankh</code>, filesystem node </h4><pre> ++ ankh :: fs node (new)
50− $: p=cash :: recursive hash
51− q=(unit ,[p=cash q=*]) :: file
52− r=(map ,@ta ankh) :: folders
53− == ::
54−</pre><p>This is a single node in the filesystem. This may be file or a directory or both. In earth filesystems, a node is a file xor a directory. On mars, we&#39;re inclusive, so a node is a file ior a directory. </p><p><code>p</code> is a recursive hash that depends on the contents of the this file or directory and on any children. </p><p><code>q</code> is the contents of this file, if any. <code>p.q</code> is a hash of the contents while <code>q.q</code> is the data itself. </p><p><code>r</code> is the set of children of this node. In the case of a pure file, this is empty. The keys are the names of the children and the values are, recursively, the nodes themselves. </p><h4 id="--cash--ankh-hash-"><code>++cash</code>, ankh hash </h4><pre> ++ cash ,@uvH :: ankh hash
55−</pre><p>This is a 128-bit hash of an ankh. These are mostly stored within ankhs themselves, and they are used to check for changes in possibly-deep hierarchies. </p><h4 id="--rung--filesystem-per-neighbor-ship-"><code>++rung</code>, filesystem per neighbor ship </h4><pre> ++ rung $: rus=(map desk rede) :: neighbor desks
56− == ::
57−</pre><p>This is the filesystem of a neighbor ship. The keys to this map are all the desks we know about on their ship. </p><h4 id="--rede--desk-state-"><code>++rede</code>, desk state </h4><pre> ++ rede :: universal project
58− $: lim=@da :: complete to
59− qyx=cult :: subscribers
60− ref=(unit rind) :: outgoing requests
61− dom=dome :: revision state
62− == ::
63−</pre><p>This is our knowledge of the state of a desk, either foreign or domestic. </p><p><code>lim</code> is the date of the last full update. We only respond to requests for stuff before this time. </p><p><code>qyx</code> is the list of subscribers to this desk. For domestic desks, this is simply <code>p:dojo</code>, all subscribers to the desk, while in foreign desks this is all the subscribers from our ship to the foreign desk. </p><p><code>ref</code> is the request manager for the desk. For domestic desks, this is null since we handle requests ourselves. </p><p><code>dom</code> is the actual data in the desk. </p><h4 id="--rind--request-manager-"><code>++rind</code>, request manager </h4><pre> ++ rind :: request manager
64− $: nix=@ud :: request index
65− bom=(map ,@ud ,[p=duct q=rave]) :: outstanding
66− fod=(map duct ,@ud) :: current requests
67− haw=(map mood (unit)) :: simple cache
68− == ::
69−</pre><p>This is the request manager for a foreign desk. </p><p><code>nix</code> is one more than the index of the most recent request. Thus, it is the next available request number. </p><p><code>bom</code> is the set of outstanding requests. The keys of this map are some subset of the numbers between 0 and one less than <code>nix</code>. The members of the map are exactly those requests that have not yet been fully satisfied. </p><p><code>fod</code> is the same set as <code>bom</code>, but from a different perspective. In particular, the values of <code>fod</code> are the same as the values of <code>bom</code>, and the <code>p</code> out of the values of <code>bom</code> are the same as the keys of <code>fod</code>. Thus, we can map ducts to their associated request number and <code>++rave:clay</code>, and we can map numbers to their associated duct and <code>++rave:clay</code>. </p><p><code>haw</code> is a map from simple requests to their values. This acts as a cache for requests that have already been made. Thus, the second request for a particular <code>++mood:clay</code> is nearly instantaneous. </p><h4 id="--rang-clay--data-store-"><code>++rang:clay</code>, data store </h4><pre> ++ rang $: hut=(map tako yaki) ::
70− lat=(map lobe blob) ::
71− == ::
72−</pre><p>This is a set of data keyed by hash. Thus, this is where the “real” data is stored, but it is only meaningful if we know the hash of what we&#39;re looking for. </p><p><code>hut</code> is a map from hashes to commits. We often get the hashes from <code>hit:dome:clay</code>, which keys them by logical id. Not every commit has an id. </p><p><code>lat</code> is a map from hashes to the actual data. We often get the hashes from a <code>++yaki</code>, a commit, which references this map to get the data. There is no <code>++blob:clay</code> in any <code>++yaki:clay</code>. They are only accessible through this map. </p><h4 id="--tako-clay--commit-reference-"><code>++tako:clay</code>, commit reference </h4><pre> ++ tako ,@ :: yaki ref
73−</pre><p>This is a hash of a <code>++yaki:clay</code>, a commit. These are most notably used as the keys in <code>hut:rang:clay</code>, where they are associated with the actual <code>++yaki:clay</code>, and as the values in <code>hit:dome:clay</code>, where sequential ids are associated with these. </p><h4 id="--yaki-clay--commit-"><code>++yaki:clay</code>, commit </h4><pre> ++ yaki ,[p=(list tako) q=(map path lobe) r=tako t=@da] :: commit
74−</pre><p>This is a single commit. </p><p><code>p</code> is a list of the hashes of the parents of this commit. In most cases, this will be a single commit, but in a merge there may be more parents. In theory, there may be an arbitrary number of parents, but in practice merges have exactly two parents. This may change in the future. For commit 1, there is no parent. </p><p><code>q</code> is a map of the paths on a desk to the data at that location. If you understand what a <code>++lobe:clay</code> and a <code>++blob:clay</code> is, then the type signature here tells the whole story. </p><p><code>r</code> is the hash associated with this commit. </p><p><code>t</code> is the date at which this commit was made. </p><h4 id="--lobe-clay--data-reference-"><code>++lobe:clay</code>, data reference </h4><pre> ++ lobe ,@ :: blob ref
75−</pre><p>This is a hash of a <code>++blob:clay</code>. These are most notably used in <code>lat:rang:clay</code>, where they are associated with the actual <code>++blob:clay</code>, and as the values in <code>q:yaki:clay</code>, where paths are associated with their data in a commit. </p><h4 id="--blob-clay--data-"><code>++blob:clay</code>, data </h4><pre> ++ blob $% [%delta p=lobe q=lobe r=udon] :: delta on q
76− [%direct p=lobe q=* r=umph] ::
77− [%indirect p=lobe q=* r=udon s=lobe] ::
78− == ::
79−</pre><p>This is a node of data. In every case, <code>p</code> is the hash of the blob. </p><p><code>%delta</code> is the case where we define the data by a delta on other data. In practice, the other data is always the previous commit, but nothing depends on this. <code>q</code> is the hash of the parent blob, and <code>r</code> is the delta. </p><p><code>%direct</code> is the case where we simply have the data directly. <code>q</code> is the data itself, and <code>r</code> is any preprocessing instructions. These almost always come from the creation of a file. </p><p><code>%indirect</code> is both of the preceding cases at once. <code>q</code> is the direct data, <code>r</code> is the delta, and <code>s</code> is the parent blob. It should always be the case that applying <code>r</code> to <code>s</code> gives the same data as <code>q</code> directly (with the prepreprocessor instructions in <code>p.r</code>). This exists purely for performance reasons. This is unused, at the moment, but in general these should be created when there are a long line of changes so that we do not have to traverse the delta chain back to the creation of the file. </p><h4 id="--udon--abstract-delta-"><code>++udon</code>, abstract delta </h4><pre> ++ udon :: abstract delta
80− $: p=umph :: preprocessor
81− $= q :: patch
82− $% [%a p=* q=*] :: trivial replace
83− [%b p=udal] :: atomic indel
84− [%c p=(urge)] :: list indel
85− [%d p=upas q=upas] :: tree edit
86− == ::
87− == ::
88−</pre><p>This is an abstract change to a file. This is a superset of what would normally be called diffs. Diffs usually refer to changes in lines of text while we have the ability to do more interesting deltas on arbitrary data structures. </p><p><code>p</code> is any preprocessor instructions. </p><p><code>%a</code> refers to the trival delta of a complete replace of old data with new data. </p><p><code>%b</code> refers to changes in an opaque atom on the block level. This has very limited usefulness, and is not used at the moment. </p><p><code>%c</code> refers to changes in a list of data. This is often lines of text, which is your classic diff. We, however, will work on any list of data. </p><p><code>%d</code> refers to changes in a tree of data. This is general enough to describe changes to any hoon noun, but often more special-purpose delta should be created for different content types. This is not used at the moment, and may in fact be unimplemented. </p><h4 id="--urge--list-change-"><code>++urge</code>, list change </h4><pre> ++ urge |*(a=_,* (list (unce a))) :: list change
89−</pre><p>This is a parametrized type for list changes. For example, <code>(urge ,@t)</code> is a list change for lines of text. </p><h4 id="--unce--change-part-of-a-list--"><code>++unce</code>, change part of a list. </h4><pre> ++ unce |* a=_,* :: change part
90− $% [%&amp; p=@ud] :: skip[copy]
91− [%| p=(list a) q=(list a)] :: p -&gt; q[chunk]
92− == ::
93−</pre><p>This is a single change in a list of elements of type <code>a</code>. For example, <code>(unce ,@t)</code> is a single change in a lines of text. </p><p><code>%&amp;</code> means the next <code>p</code> lines are unchanged. </p><p><code>%|</code> means the lines <code>p</code> have changed to <code>q</code>. </p><h4 id="--umph--preprocessing-information-"><code>++umph</code>, preprocessing information </h4><pre> ++ umph :: change filter
94− $| $? %a :: no filter
95− %b :: jamfile
96− %c :: LF text
97− == ::
98− $% [%d p=@ud] :: blocklist
99− == ::
100−</pre><p>This space intentionally left undocumented. This stuff will change once we get a well-typed clay. </p><h4 id="--upas--tree-change-"><code>++upas</code>, tree change </h4><pre> ++ upas :: tree change (%d)
101− $&amp; [p=upas q=upas] :: cell
102− $% [%0 p=axis] :: copy old
103− [%1 p=*] :: insert new
104− [%2 p=axis q=udon] :: mutate!
105− == ::
106−</pre><p>This space intentionally left undocumented. This stuff is not known to work, and will likely change when we get a well-typed clay. Also, this is not a complicated type; it is not difficult to work out the meaning. </p><h4 id="--nori-clay--repository-action-"><code>++nori:clay</code>, repository action </h4><pre> ++ nori :: repository action
107− $% [&amp; q=soba] :: delta
108− [| p=@tas] :: label
109− == ::
110−</pre><p>This describes a change that we are asking clay to make to the desk. There are two kinds of changes that may be made: we can modify files or we can apply a label to a commit. </p><p>In the <code>|</code> case, we will simply label the current commit with the given label. In the <code>&amp;</code> case, we will apply the given changes. </p><h4 id="--soba-clay--delta-"><code>++soba:clay</code>, delta </h4><pre> ++ soba ,[p=cart q=(list ,[p=path q=miso])] :: delta
111−</pre><p>This describes a set of changes to make to a desk. The <code>cart</code> is simply a pair of the old hash and the new hash of the desk. The list is a list of changes keyed by the file they&#39;re changing. Thus, the paths are paths to files to be changed while <code>miso</code> is a description of the change itself. </p><h4 id="--miso-clay--ankh-delta-"><code>++miso:clay</code>, ankh delta </h4><pre> ++ miso :: ankh delta
112− $% [%del p=*] :: delete
113− [%ins p=*] :: insert
114− [%mut p=udon] :: mutate
115− == ::
116−</pre><p>There are three kinds of changes that may be made to a node in a desk. We can insert a file, in which case <code>p</code> is the contents of the new file. We can delete a file, in which case <code>p</code> is the contents of the old file. Finally, we can mutate that file, in which case the <code>udon</code> describes the changes we are applying to the file. </p><h4 id="--mizu-clay--merged-state-"><code>++mizu:clay</code>, merged state </h4><pre> ++ mizu ,[p=@u q=(map ,@ud tako) r=rang] :: new state
117−</pre><p>This is the input to the <code>%merg</code> kiss, which allows us to perform a merge. The <code>p</code> is the number of the new head commit. The <code>q</code> is a map from numbers to commit hashes. This is all the new numbered commits that are to be inserted. The keys to this should always be the numbers from <code>let.dom</code> plus one to <code>p</code>, inclusive. The <code>r</code> is the maps of all the new commits and data. Since these are merged into the current state, no old commits or data need be here. </p><h4 id="--riff-clay--request-desist-"><code>++riff:clay</code>, request/desist </h4><pre> ++ riff ,[p=desk q=(unit rave)] :: request/desist
118−</pre><p>This represents a request for data about a particular desk. If <code>q</code> contains a <code>rave</code>, then this opens a subscription to the desk for that data. If <code>q</code> is null, then this tells clay to cancel the subscription along this duct. </p><h4 id="--riot-clay--response-"><code>++riot:clay</code>, response </h4><pre> ++ riot (unit rant) :: response/complete
119−</pre><p>A riot is a response to a subscription. If null, the subscription has been completed, and no more responses will be sent. Otherwise, the <code>rant</code> is the produced data. </p><h4 id="--rant-clay--response-data-"><code>++rant:clay</code>, response data </h4><pre> ++ rant :: namespace binding
120− $: p=[p=care q=case r=@tas] :: clade release book
121− q=path :: spur
122− r=* :: data
123− == ::
124−</pre><p>This is the data at a particular node in the filesystem. <code>p.p</code> specifies the type of data that was requested (and is produced). <code>q.p</code> gives the specific version reported (since a range of versions may be requested in a subscription). <code>r.p</code> is the desk. <code>q</code> is the path to the filesystem node. <code>r</code> is the data itself (in the format specified by <code>p.p</code>). </p><h3 id="--nako--subscription-response-data-"><code>++nako</code>, subscription response data </h3><pre> ++ nako $: gar=(map ,@ud tako) :: new ids
125− let=@ud :: next id
126− lar=(set yaki) :: new commits
127− bar=(set blob) :: new content
128− == ::
129−</pre><p>This is the data that is produced by a request for a range of revisions of a desk. This allows us to easily keep track of a remote repository -- all the new information we need is contained in the <code>nako</code>. </p><p><code>gar</code> is a map of the revisions in the range to the hash of the commit at that revision. These hashes can be used with <code>hut:rang:clay</code> to find the commit itself. </p><p><code>let</code> is either the last revision number in the range or the most recent revision number, whichever is smaller. </p><p><code>lar</code> is the set of new commits, and <code>bar</code> is the set of new content. </p><h2 id="public-interface-">Public Interface </h2><p>As with all vanes, there are exactly two ways to interact with clay. <code>%clay</code> exports a namespace accessible through <code>.^</code>, which is described above under <code>++care:clay</code>. The primary way of interacting with clay, though, is by sending kisses and receiving gifts. </p><pre> ++ gift :: out result &lt;-$
130− $% [%ergo p=@p q=@tas r=@ud] :: version update
131− [%note p=@tD q=tank] :: debug message
132− [%writ p=riot] :: response
133− == ::
134− ++ kiss :: in request -&gt;$
135− $% [%info p=@p q=@tas r=nori] :: internal edit
136− [%ingo p=@p q=@tas r=nori] :: internal noun edit
137− [%init p=@p] :: report install
138− [%into p=@p q=@tas r=nori] :: external edit
139− [%invo p=@p q=@tas r=nori] :: external noun edit
140− [%merg p=@p q=@tas r=mizu] :: internal change
141− [%wart p=sock q=@tas r=path s=*] :: network request
142− [%warp p=sock q=riff] :: file request
143− == ::
144−</pre><p>There are only a small number of possible kisses, so it behooves us to describe each in detail. </p><pre> $% [%info p=@p q=@tas r=nori] :: internal edit
145−
146− [%into p=@p q=@tas r=nori] :: external edit
147−</pre><p>These two kisses are nearly identical. At a high level, they apply changes to the filesystem. Whenever we add, remove, or edit a file, one of these cards is sent. The <code>p</code> is the ship whose filesystem we&#39;re trying to change, the <code>q</code> is the desk we&#39;re changing, and the <code>r</code> is the request change. For the format of the requested change, see the documentation for <code>++nori:clay</code> above. </p><p>When a file is changed in the unix filesystem, vere will send a <code>%into</code> kiss. This tells clay that the duct over which the kiss was sent is the duct that unix is listening on for changes. From within Arvo, though, we should never send a <code>%into</code> kiss. The <code>%info</code> kiss is exactly identical except it does not reset the duct. </p><pre> [%ingo p=@p q=@tas r=nori] :: internal noun edit
148−
149− [%invo p=@p q=@tas r=nori] :: external noun edit
150−</pre><p>These kisses are currently identical to <code>%info</code> and <code>%into</code>, though this will not always be the case. The intent is for these kisses to allow typed changes to clay so that we may store typed data. This is currently unimplemented. </p><pre> [%init p=@p] :: report install
151−</pre><p>Init is called when a ship is started on our pier. This simply creates a default <code>room</code> to go into our <code>raft</code>. Essentially, this initializes the filesystem for a ship. </p><pre> [%merg p=@p q=@tas r=mizu] :: internal change
152−</pre><p>This is called to perform a merge. This is most visibly called by :update to update the filesystem of the current ship to that of its sein. The <code>p</code> and <code>q</code> are as in <code>%info</code>, and the <code>r</code> is the description of the merge. See <code>++mizu:clay</code> above. </p><p>XX <code>XX [%wake ~] :: timer activate XX</code> XX<br />XX This card is sent by unix at the time specified by <code>++doze</code>. This time is XX usually the closest time specified in a subscription request. When <code>%wake</code> is XX called, we update our subscribers if there have been any changes. </p><pre> [%wart p=sock q=@tas r=path s=*] :: network request
153−</pre><p>This is a request that has come across the network for a particular file. When another ship asks for a file from us, that request comes to us in the form of a <code>%wart</code> kiss. This is handled by trivially turning it into a <code>%warp</code>. </p><pre> [%warp p=sock q=riff] :: file request
154−</pre><p>This is a request for information about a particular desk. This is, in its most general form, a subscription, though in many cases it is the trivial case of a subscription -- a read. See <code>++riff:clay</code> for the format of the request. </p><h2 id="lifecycle-of-a-local-read-">Lifecycle of a Local Read </h2><p>There are two real types of interaction with a filesystem: you can read, and you can write. We&#39;ll describe each process, detailing both the flow of control followed by the kernel and the algorithms involved. The simpler case is that of the read, so we&#39;ll begin with that. </p><p>When a vane or an application wishes to read a file from the filesystem, it sends a <code>%warp</code> kiss, as described above. Of course, you may request a file on another ship and, being a global filesystem, clay will happily produce it for you. That code pathway will be described in another section; here, we will restrict ourselves to examining the case of a read from a ship on our own pier. </p><p>The kiss can request either a single version of a file node or a range of versions of a desk. Here, we&#39;ll deal only with a request for a single version. </p><p>As in all vanes, a kiss enters clay via a call to <code>++call</code>. Scanning through the arm, we quickly see where <code>%warp</code> is handled. </p><pre> ?: =(p.p.q.hic q.p.q.hic)
155− =+ une=(un p.p.q.hic now ruf)
156− =+ wex=(di:une p.q.q.hic)
157− =+ ^= wao
158− ?~ q.q.q.hic
159− (ease:wex hen)
160− (eave:wex hen u.q.q.q.hic)
161− =+ ^= woo
162− abet:wao
163− [-.woo abet:(pish:une p.q.q.hic +.woo ran.wao)]
164−</pre><p>We&#39;re following the familar patern of producing a list of moves and an updated state. In this case, the state is <code>++raft</code>. </p><p>We first check to see if the sending and receiving ships are the same. If they&#39;re not, then this is a request for data on another ship. We describe that process later. Here, we discuss only the case of a local read. </p><p>At a high level, the call to <code>++un</code> sets up the core for the domestic ship that contains the files we&#39;re looking for. The call to <code>++di</code> sets up the core for the particular desk we&#39;re referring to. </p><p>After this, we perform the actual request. If there is no rave in the riff, then that means we are cancelling a request, so we call <code>++ease:de</code>. Otherwise, we start a subscription with <code>++eave:de</code>. We call <code>++abet:de</code> to resolve our various types of output into actual moves. We produce the moves we found above and the <code>++un</code> core resolved with <code>++pish:un</code> (putting the modified desk in the room) and <code>++abet:un</code> (putting the modified room in the raft). </p><p>Much of this is fairly straightforward, so we&#39;ll only describe <code>++ease</code>, <code>++eave</code>, and <code>++abet:de</code>. Feel free to look up the code to the other steps -- it should be easy to follow. </p><p>Although it&#39;s called last, it&#39;s usually worth examining <code>++abet</code> first, since it defines in what ways we can cause side effects. Let&#39;s do that, and also a few of the lines at the beginning of <code>++de</code>. </p><pre> =| yel=(list ,[p=duct q=gift])
165− =| byn=(list ,[p=duct q=riot])
166− =| vag=(list ,[p=duct q=gift])
167− =| say=(list ,[p=duct q=path r=ship s=[p=@ud q=riff]])
168− =| tag=(list ,[p=duct q=path c=note])
169− |%
170− ++ abet
171− ^- [(list move) rede]
172− :_ red
173− ;: weld
174− %+ turn (flop yel)
175− |=([a=duct b=gift] [hun %give b])
176− ::
177− %+ turn (flop byn)
178− |=([a=duct b=riot] [a %give [%writ b]])
179− ::
180− %+ turn (flop vag)
181− |=([a=duct b=gift] [a %give b])
182− ::
183− %+ turn (flop say)
184− |= [a=duct b=path c=ship d=[p=@ud q=riff]]
185− :- a
186− [%pass b %a %want [who c] [%q %re p.q.d (scot %ud p.d) ~] q.d]
187− ::
188− %+ turn (flop tag)
189− |=([a=duct b=path c=note] [a %pass b c])
190− ==
191−</pre><p>This is very simple code. We see there are exactly five different kinds of side effects we can generate. </p><p>In <code>yel</code> we put gifts that we wish to be sent along the <code>hun:room</code> duct to dill. See the documentation for <code>++room</code> above. This is how we display messages to the terminal. </p><p>In <code>byn</code> we put riots that we wish returned to subscribers. Recall that a riot is a response to a subscription. These are returned to our subscribers in the form of a <code>%writ</code> gift. </p><p>In <code>vag</code> we put gifts along with the ducts on which to send them. This allows us to produce arbitrary gifts, but in practice this is only used to produce <code>%ergo</code> gifts. </p><p>In <code>say</code> we put messages we wish to pass to ames. These messages are used to request information from clay on other piers. We must provide not only the duct and the request (the riff), but also the return path, the other ship to talk to, and the sequence number of the request. </p><p>In <code>tag</code> we put arbitrary notes we wish to pass to other vanes. For now, the only notes we pass here are <code>%wait</code> and <code>%rest</code> to the timer vane. </p><p>Now that we know what kinds of side effects we may have, we can jump into the handling of requests. </p><pre> ++ ease :: release request
192− |= hen=duct
193− ^+ +&gt;
194− ?~ ref +&gt;
195− =+ rov=(~(got by qyx) hen)
196− =. qyx (~(del by qyx) hen)
197− (mabe rov (cury best hen))
198− =. qyx (~(del by qyx) hen)
199− |- ^+ +&gt;+.$
200− =+ nux=(~(get by fod.u.ref) hen)
201− ?~ nux +&gt;+.$
202− %= +&gt;+.$
203− say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
204− fod.u.ref (~(del by fod.u.ref) hen)
205− bom.u.ref (~(del by bom.u.ref) u.nux)
206− ==
207−</pre><p>This is called when we&#39;re cancelling a subscription. For domestic desks, <code>ref</code> is null, so we&#39;re going to cancel any timer we might have created. We first delete the duct from our map of requests, and then we call <code>++mabe</code> with <code>++best</code> to send a <code>%rest</code> kiss to the timer vane if we have started a timer. We&#39;ll describe <code>++best</code> and <code>++mabe</code> momentarily. </p><p>Although we said we&#39;re not going to talk about foreign requests yet, it&#39;s easy to see that for foreign desks, we cancel any outstanding requests for this duct and send a message over ames to the other ship telling them to cancel the subscription. </p><pre> ++ best
208− |= [hen=duct tym=@da]
209− %_(+&gt; tag :_(tag [hen /tyme %t %rest tym]))
210−</pre><p>This simply pushes a <code>%rest</code> note onto <code>tag</code>, from where it will be passed back to arvo to be handled. This cancels the timer at the given duct (with the given time). </p><pre> ++ mabe :: maybe fire function
211− |* [rov=rove fun=$+(@da _+&gt;.^$)]
212− ^+ +&gt;.$
213− %- fall :_ +&gt;.$
214− %- bind :_ fun
215− ^- (unit ,@da)
216− ?- -.rov
217− %&amp;
218− ?. ?=(%da -.q.p.rov) ~
219− `p.q.p.rov
220− %|
221− =* mot p.rov
222− %+ hunt
223− ?. ?=(%da -.p.mot) ~
224− ?.((lth now p.p.mot) ~ [~ p.p.mot])
225− ?. ?=(%da -.q.mot) ~
226− ?.((lth now p.q.mot) [~ now] [~ p.q.mot])
227− ==
228−</pre><p>This decides whether the given request can only be satsified in the future. In that case, we call the given function with the time in the future when we expect to have an update to give to this request. This is called with <code>++best</code> to cancel timers and with <code>++bait</code> to start them. </p><p>For single requests, we have a time if the request is for a particular time (which is assumed to be in the future). For ranges of requests, we check both the start and end cases to see if they are time cases. If so, we choose the earlier time. </p><p>If any of those give us a time, then we call the given funciton with the smallest time. </p><p>The more interesting case is, of course, when we&#39;re not cancelling a subscription but starting one. </p><pre> ++ eave :: subscribe
229− |= [hen=duct rav=rave]
230− ^+ +&gt;
231− ?- -.rav
232− &amp;
233− ?: &amp;(=(p.p.rav %u) !=(p.q.p.rav now))
234− ~&amp; [%clay-fail p.q.p.rav %now now]
235− !!
236− =+ ver=(aver p.rav)
237− ?~ ver
238− (duce hen rav)
239− ?~ u.ver
240− (blub hen)
241− (blab hen p.rav u.u.ver)
242−</pre><p>There are two types of subscriptions -- either we&#39;re requesting a single file or we&#39;re requesting a range of versions of a desk. We&#39;ll dicuss the simpler case first. </p><p>First, we check that we&#39;re not requesting the <code>rang</code> from any time other than the present. Since we don&#39;t store that information for any other time, we can&#39;t produce it in a referentially transparent manner for any time other than the present. </p><p>Then, we try to read the requested <code>mood:clay</code> <code>p.rav</code>. If we can&#39;t access the request data right now, we call <code>++duce</code> to put the request in our queue to be satisfied when the information becomes available. </p><p>This case occurs when we make a request for a case whose (1) date is after the current date, (2) number is after the current number, or (3) label is not yet used. </p><pre> ++ duce :: produce request
243− |= [hen=duct rov=rove]
244− ^+ +&gt;
245− =. qyx (~(put by qyx) hen rov)
246− ?~ ref
247− (mabe rov (cury bait hen))
248− |- ^+ +&gt;+.$ :: XX why?
249− =+ rav=(reve rov)
250− =+ ^= vaw ^- rave
251− ?. ?=([%&amp; %v *] rav) rav
252− [%| [%ud let.dom] `case`q.p.rav r.p.rav]
253− =+ inx=nix.u.ref
254− %= +&gt;+.$
255− say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
256− nix.u.ref +(nix.u.ref)
257− bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
258− fod.u.ref (~(put by fod.u.ref) hen inx)
259− ==
260−</pre><p>The code for <code>++duce</code> is nearly the exact inverse of <code>++ease</code>, which in the case of a domestic desk is very simple -- we simply put the duct and rave into <code>qyx</code> and possibly start a timer with <code>++mabe</code> and <code>++bait</code>. Recall that <code>ref</code> is null for domestic desks and that <code>++mabe</code> fires the given function with the time we need to be woken up at, if we need to be woken up at a particular time. </p><pre> ++ bait
261− |= [hen=duct tym=@da]
262− %_(+&gt; tag :_(tag [hen /tyme %t %wait tym]))
263−</pre><p>This sets an alarm by sending a <code>%wait</code> card with the given time to the timer vane. </p><p>Back in <code>++eave</code>, if <code>++aver</code> returned <code>[~ ~]</code>, then we cancel the subscription. This occurs when we make (1) a <code>%x</code> request for a file that does not exist, (2) a <code>%w</code> request with a case that is not a number, or (3) a <code>%w</code> request with a nonempty path. The <code>++blub</code> is exactly what you would expect it to be. </p><pre> ++ blub :: ship stop
264− |= hen=duct
265− %_(+&gt; byn [[hen ~] byn])
266−</pre><p>We notify the duct that we&#39;re cancelling their subscription since it isn&#39;t satisfiable. </p><p>Otherwise, we have received the desired information, so we send it on to the subscriber with <code>++blab</code>. </p><pre> ++ blab :: ship result
267− |= [hen=duct mun=mood dat=*]
268− ^+ +&gt;
269− +&gt;(byn [[hen ~ [p.mun q.mun syd] r.mun dat] byn])
270−</pre><p>The most interesting arm called in <code>++eave</code> is, of course, <code>++aver</code>, where we actually try to read the data. </p><pre> ++ aver :: read
271− |= mun=mood
272− ^- (unit (unit ,*))
273− ?: &amp;(=(p.mun %u) !=(p.q.mun now)) :: prevent bad things
274− ~&amp; [%clay-fail p.q.mun %now now]
275− !!
276− =+ ezy=?~(ref ~ (~(get by haw.u.ref) mun))
277− ?^ ezy ezy
278− =+ nao=(~(case-to-aeon ze lim dom ran) q.mun)
279− ?~(nao ~ [~ (~(read-at-aeon ze lim dom ran) u.nao mun)])
280−</pre><p>We check immediately that we&#39;re not requesting the <code>rang</code> for any time other than the present. </p><p>If this is a foreign desk, then we check our cache for the specific request. If either this is a domestic desk or we don&#39;t have the request in our cache, then we have to actually go read the data from our dome. </p><p>We need to do two things. First, we try to find the number of the commit specified by the given case, and then we try to get the data there. </p><p>Here, we jump into <code>arvo/zuse.hoon</code>, which is where much of the algorithmic code is stored, as opposed to the clay interface, which is stored in <code>arvo/clay.hoon</code>. We examine <code>++case-to-aeon:ze</code>. </p><pre> ++ case-to-aeon :: case-to-aeon:ze
281− |= lok=case :: act count through
282− ^- (unit aeon)
283− ?- -.lok
284− %da
285− ?: (gth p.lok lim) ~
286− |- ^- (unit aeon)
287− ?: =(0 let) [~ 0] :: avoid underflow
288− ?: %+ gte p.lok
289− =&lt; t
290− %- tako-to-yaki
291− %- aeon-to-tako
292− let
293− [~ let]
294− $(let (dec let))
295− ::
296− %tas (~(get by lab) p.lok)
297− %ud ?:((gth p.lok let) ~ [~ p.lok])
298− ==
299−</pre><p>We handle each type of <code>case:clay</code> differently. The latter two types are easy. </p><p>If we&#39;re requesting a revision by label, then we simply look up the requested label in <code>lab</code> from the given dome. If it exists, that is our aeon; else we produce null, indicating the requested revision does not yet exist. </p><p>If we&#39;re requesting a revision by number, we check if we&#39;ve yet reached that number. If so, we produce the number; else we produce null. </p><p>If we&#39;re requesting a revision by date, we check first if the date is in the future, returning null if so. Else we start from the most recent revision and scan backwards until we find the first revision committed before that date, and we produce that. If we requested a date before any revisions were committed, we produce <code>0</code>. </p><p>The definitions of <code>++aeon-to-tako</code> and <code>++tako-to-yaki</code> are trivial. </p><pre> ++ aeon-to-tako ~(got by hit)
300−
301− ++ tako-to-yaki ~(got by hut) :: grab yaki
302−</pre><p>We simply look up the aeon or tako in their respective maps (<code>hit</code> and <code>hut</code>). </p><p>Assuming we got a valid version number, <code>++aver</code> calls <code>++read-at-aeon:ze</code>, which reads the requested data at the given revision. </p><pre> ++ read-at-aeon :: read-at-aeon:ze
303− |= [oan=aeon mun=mood] :: seek and read
304− ^- (unit)
305− ?: &amp;(?=(%w p.mun) !?=(%ud -.q.mun)) :: NB only for speed
306− ?^(r.mun ~ [~ oan])
307− (read:(rewind oan) mun)
308−</pre><p>If we&#39;re requesting the revision number with a case other than by number, then we go ahead and just produce the number we were given. Otherwise, we call <code>++rewind</code> to rewind our state to the given revision, and then we call <code>++read</code> to get the requested information. </p><pre> ++ rewind :: rewind:ze
309− |= oan=aeon :: rewind to aeon
310− ^+ +&gt;
311− ?: =(let oan) +&gt;
312− ?: (gth oan let) !! :: don&#39;t have version
313− +&gt;(ank (checkout-ankh q:(tako-to-yaki (aeon-to-tako oan))), let oan)
314−</pre><p>If we&#39;re already at the requested version, we do nothing. If we&#39;re requesting a version later than our head, we are unable to comply. </p><p>Otherwise, we get the hash of the commit at the number, and from that we get the commit itself (the yaki), which has the map of path to lobe that represents a version of the filesystem. We call <code>++checkout-ankh</code> to checkout the commit, and we replace <code>ank</code> in our context with the result. </p><pre> ++ checkout-ankh :: checkout-ankh:ze
315− |= hat=(map path lobe) :: checkout commit
316− ^- ankh
317− %- cosh
318− %+ roll (~(tap by hat) ~)
319− |= [[pat=path bar=lobe] ank=ankh]
320− ^- ankh
321− %- cosh
322− ?~ pat
323− =+ zar=(lobe-to-noun bar)
324− ank(q [~ (sham zar) zar])
325− =+ nak=(~(get by r.ank) i.pat)
326− %= ank
327− r %+ ~(put by r.ank) i.pat
328− $(pat t.pat, ank (fall nak _ankh))
329− ==
330−</pre><p>Twice we call <code>++cosh</code>, which hashes a commit, updating <code>p</code> in an <code>ankh</code>. Let&#39;s jump into that algorithm before we describe <code>++checkout-ankh</code>. </p><pre> ++ cosh :: locally rehash
331− |= ank=ankh :: NB v/unix.c
332− ank(p rehash:(zu ank))
333−</pre><p>We simply replace <code>p</code> in the hash with the <code>cash</code> we get from a call to <code>++rehash:zu</code>. </p><pre> ++ zu !: :: filesystem
334− |= ank=ankh :: filesystem state
335− =| myz=(list ,[p=path q=miso]) :: changes in reverse
336− =| ram=path :: reverse path into
337− |%
338− ++ rehash :: local rehash
339− ^- cash
340− %+ mix ?~(q.ank 0 p.u.q.ank)
341− =+ axe=1
342− |- ^- cash
343− ?~ r.ank _@
344− ;: mix
345− (shaf %dash (mix axe (shaf %dush (mix p.n.r.ank p.q.n.r.ank))))
346− $(r.ank l.r.ank, axe (peg axe 2))
347− $(r.ank r.r.ank, axe (peg axe 3))
348− ==
349−</pre><p><code>++zu</code> is a core we set up with a particular filesystem node to traverse a checkout of the filesystem and access the actual data inside it. One of the things we can do with it is to create a recursive hash of the node. </p><p>In <code>++rehash</code>, if this node is a file, then we xor the remainder of the hash with the hash of the contents of the file. The remainder of the hash is <code>0</code> if we have no children, else we descend into our children. Basically, we do a half SHA-256 of the xor of the axis of this child and the half SHA-256 of the xor of the name of the child and the hash of the child. This is done for each child and all the results are xored together. </p><p>Now we return to our discussion of <code>++checkout-ankh</code>. </p><p>We fold over every path in this version of the filesystem and create a great ankh out of them. First, we call <code>++lobe-to-noun</code> to get the raw data referred to be each lobe. </p><pre> ++ lobe-to-noun :: grab blob
350− |= p=lobe :: ^- *
351− %- blob-to-noun
352− (lobe-to-blob p)
353−</pre><p>This converts a lobe into the raw data it refers to by first getting the blob with <code>++lobe-to-blob</code> and converting that into data with <code>++blob-to-noun</code>. </p><pre> ++ lobe-to-blob ~(got by lat) :: grab blob
354−</pre><p>This just grabs the blob that the lobe refers to. </p><pre> ++ blob-to-noun :: grab blob
355− |= p=blob
356− ?- -.p
357− %delta (lump r.p (lobe-to-noun q.p))
358− %direct q.p
359− %indirect q.p
360− ==
361−</pre><p>If we have either a direct or an indirect blob, then the data is stored right in the blob. Otherwise, we have to reconstruct it from the diffs. We do this by calling <code>++lump</code> on the diff in the blob with the data obtained by recursively calling the parent of this blob. </p><pre> ++ lump :: apply patch
362− |= [don=udon src=*]
363− ^- *
364− ?+ p.don ~|(%unsupported !!)
365− %a
366− ?+ -.q.don ~|(%unsupported !!)
367− %a q.q.don
368− %c (lurk ((hard (list)) src) p.q.don)
369− %d (lure src p.q.don)
370− ==
371− ::
372− %c
373− =+ dst=(lore ((hard ,@) src))
374− %- roly
375− ?+ -.q.don ~|(%unsupported !!)
376− %a ((hard (list ,@t)) q.q.don)
377− %c (lurk dst p.q.don)
378− ==
379− ==
380−</pre><p>This is defined in <code>arvo/hoon.hoon</code> for historical reasons which are likely no longer applicable. Since the <code>++umph</code> structure will likely change we convert clay to be a typed filesystem, we&#39;ll only give a high-level description of this process. If we have a <code>%a</code> udon, then we&#39;re performing a trivial replace, so we produce simply <code>q.q.don</code>. If we have a <code>%c</code> udon, then we&#39;re performing a list merge (as in, for example, lines of text). The merge is performed by <code>++lurk</code>. </p><pre> ++ lurk :: apply list patch
381− |* [hel=(list) rug=(urge)]
382− ^+ hel
383− =+ war=`_hel`~
384− |- ^+ hel
385− ?~ rug (flop war)
386− ?- -.i.rug
387− &amp;
388− %= $
389− rug t.rug
390− hel (slag p.i.rug hel)
391− war (weld (flop (scag p.i.rug hel)) war)
392− ==
393− ::
394− |
395− %= $
396− rug t.rug
397− hel =+ gur=(flop p.i.rug)
398− |- ^+ hel
399− ?~ gur hel
400− ?&gt;(&amp;(?=(^ hel) =(i.gur i.hel)) $(hel t.hel, gur t.gur))
401− war (weld q.i.rug war)
402− ==
403− ==
404−</pre><p>We accumulate our final result in <code>war</code>. If there&#39;s nothing more in our list of merge instructions (unces), we just reverse <code>war</code> and produce it. Otherwise, we process another unce. If the unce is of type <code>&amp;</code>, then we have <code>p.i.rug</code> lines of no changes, so we just copy them over from <code>hel</code> to <code>war</code>. If the unice is of type <code>|</code>, then we verify that the source lines (in <code>hel</code>) are what we expect them to be (<code>p.i.rug</code>), crashing on failure. If they&#39;re good, then we append the new lines in <code>q.i.rug</code> onto <code>war</code>. </p><p>And that&#39;s really it. List merges are pretty easy. Anyway, if you recall, we were discussing <code>++checkout-ankh</code>. </p><pre> ++ checkout-ankh :: checkout-ankh:ze
405− |= hat=(map path lobe) :: checkout commit
406− ^- ankh
407− %- cosh
408− %+ roll (~(tap by hat) ~)
409− |= [[pat=path bar=lobe] ank=ankh]
410− ^- ankh
411− %- cosh
412− ?~ pat
413− =+ zar=(lobe-to-noun bar)
414− ank(q [~ (sham zar) zar])
415− =+ nak=(~(get by r.ank) i.pat)
416− %= ank
417− r %+ ~(put by r.ank) i.pat
418− $(pat t.pat, ank (fall nak _ankh))
419− ==
420−</pre><p>If the path is null, then we calculate <code>zar</code>, the raw data at the path <code>pat</code> in this version. We produce the given ankh with the correct data. </p><p>Otherwise, we try to get the child we&#39;re looking at from our parent ankh. If it&#39;s already been created, this succeeds; otherwise, we simply create a default blank ankh. We place ourselves in our parent after recursively computing our children. </p><p>This algorithm really isn&#39;t that complicated, but it may not be immediately obvious why it works. An example should clear everything up. </p><p>Suppose <code>hat</code> is a map of the following information. </p><pre> /greeting --&gt; &quot;customary upon meeting&quot;
421− /greeting/english --&gt; &quot;hello&quot;
422− /greeting/spanish --&gt; &quot;hola&quot;
423− /greeting/russian/short --&gt; &quot;привет&quot;
424− /greeting/russian/long --&gt; &quot;Здравствуйте&quot;
425− /farewell/russian --&gt; &quot;до свидания&quot;
426−</pre><p>Furthermore, let&#39;s say that we process them in this order: </p><pre> /greeting/english
427− /greeting/russian/short
428− /greeting/russian/long
429− /greeting
430− /greeting/spanish
431− /farewell/russian
432−</pre><p>Then, the first path we process is <code>/greeting/english</code> . Since our path is not null, we try to get <code>nak</code>, but because our ankh is blank at this point it doesn&#39;t find anything. Thus, update our blank top-level ankh with a child <code>%greeting</code>. and recurse with the blank <code>nak</code> to create the ankh of the new child. </p><p>In the recursion, we our path is <code>/english</code> and our ankh is again blank. We try to get the <code>english</code> child of our ankh, but this of course fails. Thus, we update our blank <code>/greeting</code> ankh with a child <code>english</code> produced by recursing. </p><p>Now our path is null, so we call <code>++lobe-to-noun</code> to get the actual data, and we place it in the brand-new ankh. </p><p>Next, we process <code>/greeting/russian/short</code>. Since our path is not null, we try to get the child named <code>%greeting</code>, which does exist since we created it earlier. We put modify this child by recursing on it. Our path is now <code>/russian/short</code>, so we look for a <code>%russian</code> child in our <code>/greeting</code> ankh. This doesn&#39;t exist, so we add it by recursing. Our path is now <code>/short</code>, so we look for a <code>%short</code> child in our <code>/greeting/russian</code> ankh. This doesn&#39;t exist, so we add it by recursing. Now our path is null, so we set the contents of this node to <code>&quot;привет&quot;</code>, and we&#39;re done processing this path. </p><p>Next, we process <code>/greeting/russian/long</code>. This proceeds similarly to the previous except that now the ankh for <code>/greeting/russian</code> already exists, so we simply reuse it rather than creating a new one. Of course, we still must create a new <code>/greeting/russian/long</code> ankh. </p><p>Next, we process <code>/greeting</code>. This ankh already exists, so after we&#39;ve recursed once, our path is null, and our ankh is not blank -- it already has two children (and two grandchildren). We don&#39;t touch those, though, since a node may be both a file and a directory. We just add the contents of the file -- “customary upon meeting” -- to the existing ankh. </p><p>Next, we process <code>/greeting/spanish</code>. Of course, the <code>/greeting</code> ankh already exists, but it doesn&#39;t have a <code>%spanish</code> child, so we create that, taking care not to disturb the contents of the <code>/greeting</code> file. We put “hola” into the ankh and call it good. </p><p>Finally, we process <code>/farewell/russian</code>. Here, the <code>/farewell</code> ankh doesn&#39;t exist, so we create it. Clearly the newly-created ankh doesn&#39;t have any children, so we have to add a <code>%russian</code> child, and in this child we put our last content -- “до свидания”. </p><p>We hope it&#39;s fairly obvious that the order we process the paths doesn&#39;t affect the final ankh tree. The tree will be constructed in a very different order depending on what order the paths come in, but the resulting tree is independent of order. </p><p>At any rate, we were talking about something important, weren&#39;t we? If you recall, that concludes our discussion of <code>++rewind</code>, which was called from <code>++read-at-aeon</code>. In summary, <code>++rewind</code> returns a context in which our current state is (very nearly) as it was when the specified version of the desk was the head. This allows <code>++read-at-aeon</code> to call <code>++read</code> to read the requested information. </p><pre> ++ read :: read:ze
433− |= mun=mood :: read at point
434− ^- (unit)
435− ?: ?=(%v p.mun)
436− [~ `dome`+&lt;+&lt;.read]
437− ?: &amp;(?=(%w p.mun) !?=(%ud -.q.mun))
438− ?^(r.mun ~ [~ let])
439− ?: ?=(%w p.mun)
440− =+ ^= yak
441− %- tako-to-yaki
442− %- aeon-to-tako
443− let
444− ?^(r.mun ~ [~ [t.yak (forge-nori yak)]])
445− ::?&gt; ?=(^ hit) ?^(r.mun ~ [~ i.hit]) :: what do?? need [@da nori]
446− (query(ank ank:(descend-path:(zu ank) r.mun)) p.mun)
447−</pre><p>If we&#39;re requesting the dome, then we just return that immediately. </p><p>If we&#39;re requesting the revision number of the desk and we&#39;re not requesting it by number, then we just return the current number of this desk. Note of course that this was really already handled in <code>++read-at-aeon</code>. </p><p>If we&#39;re requesting a <code>%w</code> with a specific revision number, then we do something or other with the commit there. It&#39;s kind of weird, and it doesn&#39;t seem to work, so we&#39;ll ignore this case. </p><p>Otherwise, we descend into the ankh tree to the given path with <code>++descend-path:zu</code>, and then we handle specific request in <code>++query</code>. </p><pre> ++ descend-path :: descend recursively
448− |= way=path
449− ^+ +&gt;
450− ?~(way +&gt; $(way t.way, +&gt; (descend i.way)))
451−</pre><p>This is simple recursion down into the ankh tree. <code>++descend</code> descends one level, so this will eventually get us down to the path we want. </p><pre> ++ descend :: descend
452− |= lol=@ta
453− ^+ +&gt;
454− =+ you=(~(get by r.ank) lol)
455− +&gt;.$(ram [lol ram], ank ?~(you [*cash ~ ~] u.you))
456−</pre><p><code>ram</code> is the path that we&#39;re at, so to descend one level we push the name of this level onto that path. We update the ankh with the correct one at that path if it exists; else we create a blank one. </p><p>Once we&#39;ve decscended to the correct level, we need to actually deal with the request. </p><pre> ++ query :: query:ze
457− |= ren=?(%u %v %x %y %z) :: endpoint query
458− ^- (unit ,*)
459− ?- ren
460− %u [~ `rang`+&lt;+&gt;.query]
461− %v [~ `dome`+&lt;+&lt;.query]
462− %x ?~(q.ank ~ [~ q.u.q.ank])
463− %y [~ as-arch]
464− %z [~ ank]
465− ==
466−</pre><p>Now that everything&#39;s set up, it&#39;s really easy. If they&#39;re requesting the rang, dome, or ankh, we give it to them. If the contents of a file, we give it to them if it is in fact a file. If the <code>arch</code>, then we calculate it with <code>++as-arch</code>. </p><pre> ++ as-arch :: as-arch:ze
467− ^- arch :: arch report
468− :+ p.ank
469− ?~(q.ank ~ [~ p.u.q.ank])
470− |- ^- (map ,@ta ,~)
471− ?~ r.ank ~
472− [[p.n.r.ank ~] $(r.ank l.r.ank) $(r.ank r.r.ank)]
473−</pre><p>This very simply strips out all the “real” data and returns just our own hash, the hash of the file contents (if we&#39;re a file), and a map of the names of our immediate children. </p><h2 id="lifecycle-of-a-local-subscription-">Lifecycle of a Local Subscription </h2><p>A subscription to a range of revisions of a desk initially follows the same path that a single read does. In <code>++aver</code>, we checked the head of the given rave. If the head was <code>&amp;</code>, then it was a single request, so we handled it above. If <code>|</code>, then we handle it with the following code. </p><pre> =+ nab=(~(case-to-aeon ze lim dom ran) p.p.rav)
474− ?~ nab
475− ?&gt; =(~ (~(case-to-aeon ze lim dom ran) q.p.rav))
476− (duce hen (rive rav))
477− =+ huy=(~(case-to-aeon ze lim dom ran) q.p.rav)
478− ?: &amp;(?=(^ huy) |((lth u.huy u.nab) &amp;(=(0 u.huy) =(0 u.nab))))
479− (blub hen)
480− =+ top=?~(huy let.dom u.huy)
481− =+ sar=(~(lobes-at-path ze lim dom ran) u.nab r.p.rav)
482− =+ ear=(~(lobes-at-path ze lim dom ran) top r.p.rav)
483− =. +&gt;.$
484− ?: =(sar ear) +&gt;.$
485− =+ fud=(~(make-nako ze lim dom ran) u.nab top)
486− (bleb hen u.nab fud)
487− ?^ huy
488− (blub hen)
489− =+ ^= ptr ^- case
490− [%ud +(let.dom)]
491− (duce hen `rove`[%| ptr q.p.rav r.p.rav ear])
492− ==
493−</pre><p>Recall that <code>++case-to-aeon:ze</code> produces the revision number that a case corresponds to, if it corresponds to any. If it doesn&#39;t yet correspond to a revision, then it produces null. </p><p>Thus, we first check to see if we&#39;ve even gotten to the beginning of the range of revisions requested. If not, then we assert that we haven&#39;t yet gotten to the end of the range either, because that would be really strange. If not, then we immediately call <code>++duce</code>, which, if you recall, for a local request, simply puts this duct and rove into our cult <code>qyx</code>, so that we know who to respond to when the revision does appear. </p><p>If we&#39;ve already gotten to the first revision, then we can produce some content immediately. If we&#39;ve also gotten to the final revision, and that revision is earlier than the start revision, then it&#39;s a bad request and we call <code>++blub</code>, which tells the subscriber that his subscription will not be satisfied. </p><p>Otherwise, we find the data at the given path at the beginning of the subscription and at the last available revision in the subscription. If they&#39;re the same, then we don&#39;t send a notification. Otherwise, we call <code>++gack</code>, which creates the <code>++nako</code> we need to produce. We call <code>++bleb</code> to actually produce the information. </p><p>If we already have the last requested revision, then we also tell the subscriber with <code>++blub</code> that the subscription will receive no further updates. </p><p>If there will be more revisions in the subscription, then we call <code>++duce</code>, adding the duct to our subscribers. We modify the rove to start at the next revision since we&#39;ve already handled all the revisions up to the present. </p><p>We glossed over the calls to <code>++lobes-at-path</code>, <code>++make-nako</code>, and <code>++bleb</code>, so we&#39;ll get back to those right now. <code>++bleb</code> is simple, so we&#39;ll start with that. </p><pre> ++ bleb :: ship sequence
494− |= [hen=duct ins=@ud hip=nako]
495− ^+ +&gt;
496− (blab hen [%w [%ud ins] ~] hip)
497−</pre><p>We&#39;re given a duct, the beginning revision number, and the nako that contains the updates since that revision. We use <code>++blab</code> to produce this result to the subscriber. The case is <code>%w</code> with a revision number of the beginning of the subscription, and the data is the nako itself. </p><p>We call <code>++lobes-at-path:ze</code> to get the data at the particular path. </p><pre> ++ lobes-at-path :: lobes-at-path:ze
498− |= [oan=aeon pax=path] :: data at path
499− ^- (map path lobe)
500− ?: =(0 oan) ~
501− %- mo
502− %+ skim
503− %. ~
504− %~ tap by
505− =&lt; q
506− %- tako-to-yaki
507− %- aeon-to-tako
508− oan
509− |= [p=path q=lobe]
510− ?| ?=(~ pax)
511− ?&amp; !?=(~ p)
512− =(-.pax -.p)
513− $(p +.p, pax +.pax)
514− == ==
515−</pre><p>At revision zero, the theoretical common revision between all repositories, there is no data, so we produce null. </p><p>We get the list of paths (paired with their lobe) in the revision referred to by the given number and we keep only those paths which begin with <code>pax</code>. Converting to a map, we now have a map from the subpaths at the given path to the hash of their data. This is simple and efficient to calculate and compare to later revisions. This allows us to easily tell if a node or its children have changed. </p><p>Finally, we will describe <code>++make-nako:ze</code>. </p><pre> ++ make-nako :: gack a through b
516− |= [a=aeon b=aeon]
517− ^- [(map aeon tako) aeon (set yaki) (set blob)]
518− :_ :- b
519− =- [(takos-to-yakis -&lt;) (lobes-to-blobs -&gt;)]
520− %+ reachable-between-takos
521− (~(get by hit) a) :: if a not found, a=0
522− (aeon-to-tako b)
523− ^- (map aeon tako)
524− %- mo %+ skim (~(tap by hit) ~)
525− |= [p=aeon *]
526− &amp;((gth p a) (lte p b))
527−</pre><p>We need to produce four things -- the numbers of the new commits, the number of the latest commit, the new commits themselves, and the new data itself. </p><p>The first is fairly easy to produce. We simply go over our map of numbered commits and produce all those numbered greater than <code>a</code> and not greater than <code>b</code>. </p><p>The second is even easier to produce -- <code>b</code> is clearly our most recent commit. </p><p>The third and fourth are slightly more interesting, though not too terribly difficult. First, we call <code>++reachable-between-takos</code>. </p><pre> ++ reachable-between-takos
528− |= [a=(unit tako) b=tako] :: pack a through b
529− ^- [(set tako) (set lobe)]
530− =+ ^= sar
531− ?~ a ~
532− (reachable-takos r:(tako-to-yaki u.a))
533− =+ yak=`yaki`(tako-to-yaki b)
534− %+ new-lobes-takos (new-lobes ~ sar) :: get lobes
535− |- ^- (set tako) :: walk onto sar
536− ?: (~(has in sar) r.yak)
537− ~
538− =+ ber=`(set tako)`(~(put in `(set tako)`~) `tako`r.yak)
539− %- ~(uni in ber)
540− ^- (set tako)
541− %+ roll p.yak
542− |= [yek=tako bar=(set tako)]
543− ^- (set tako)
544− ?: (~(has in bar) yek) :: save some time
545− bar
546− %- ~(uni in bar)
547− ^$(yak (tako-to-yaki yek))
548−</pre><p>We take a possible starting commit and a definite ending commit, and we produce the set of commits and the set of data between them. </p><p>We let <code>sar</code> be the set of commits reachable from <code>a</code>. If <code>a</code> is null, then obviously no commits are reachable. Otherwise, we call <code>++reachable-takos</code> to calculate this. </p><pre> ++ reachable-takos :: reachable
549− |= p=tako :: XX slow
550− ^- (set tako)
551− =+ y=(tako-to-yaki p)
552− =+ t=(~(put in _(set tako)) p)
553− %+ roll p.y
554− |= [q=tako s=_t]
555− ?: (~(has in s) q) :: already done
556− s :: hence skip
557− (~(uni in s) ^$(p q)) :: otherwise traverse
558−</pre><p>We very simply produce the set of the given tako plus its parents, recursively. </p><p>Back in <code>++reachable-between-takos</code>, we let <code>yak</code> be the yaki of <code>b</code>, the ending commit. With this, we create a set that is the union of <code>sar</code> and all takos reachable from <code>b</code>. </p><p>We pass <code>sar</code> into <code>++new-lobes</code> to get all the lobes referenced by any tako referenced by <code>a</code>. The result is passed into <code>++new-lobes-takos</code> to do the same, but not recomputing those in already calculated last sentence. This produces the sets of takos and lobes we need. </p><pre> ++ new-lobes :: object hash set
559− |= [b=(set lobe) a=(set tako)] :: that aren&#39;t in b
560− ^- (set lobe)
561− %+ roll (~(tap in a) ~)
562− |= [tak=tako bar=(set lobe)]
563− ^- (set lobe)
564− =+ yak=(tako-to-yaki tak)
565− %+ roll (~(tap by q.yak) ~)
566− |= [[path lob=lobe] far=_bar]
567− ^- (set lobe)
568− ?~ (~(has in b) lob) :: don&#39;t need
569− far
570− =+ gar=(lobe-to-blob lob)
571− ?- -.gar
572− %direct (~(put in far) lob)
573− %delta (~(put in $(lob q.gar)) lob)
574− %indirect (~(put in $(lob s.gar)) lob)
575− ==
576−</pre><p>Here, we&#39;re creating a set of lobes referenced in a commit in <code>a</code>. We start out with <code>b</code> as the initial set of lobes, so we don&#39;t need to recompute any of the lobes referenced in there. </p><p>The algorithm is pretty simple, so we won&#39;t bore you with the details. We simply traverse every commit in <code>a</code>, looking at every blob referenced there, and, if it&#39;s not already in <code>b</code>, we add it to <code>b</code>. In the case of a direct blob, we&#39;re done. For a delta or an indirect blob, we recursively add every blob referenced within the blob. </p><pre> ++ new-lobes-takos :: garg &amp; repack
577− |= [b=(set lobe) a=(set tako)]
578− ^- [(set tako) (set lobe)]
579− [a (new-lobes b a)]
580−</pre><p>Here, we just update the set of lobes we&#39;re given with the commits we&#39;re given and produce both sets. </p><p>This concludes our discussion of a local subscription. </p><h2 id="lifecycle-of-a-foreign-read-or-subscription-">Lifecycle of a Foreign Read or Subscription </h2><p>Foreign reads and subscriptions are handled in much the same way as local ones. The interface is the same -- a vane or app sends a <code>%warp</code> kiss with the request. The difference is simply that the <code>sock</code> refers to the foreign ship. </p><p>Thus, we start in the same place -- in <code>++call</code>, handling <code>%warp</code>. However, since the two side of the <code>sock</code> are different, we follow a different path. </p><pre> =+ wex=(do now p.q.hic p.q.q.hic ruf)
581− =+ ^= woo
582− ?~ q.q.q.hic
583− abet:(ease:wex hen)
584− abet:(eave:wex hen u.q.q.q.hic)
585− [-.woo (posh q.p.q.hic p.q.q.hic +.woo ruf)]
586−</pre><p>If we compare this to how the local case was handled, we see that it&#39;s not all that different. We use <code>++do</code> rather than <code>++un</code> and <code>++de</code> to set up the core for the foreign ship. This gives us a <code>++de</code> core, so we either cancel or begin the request by calling <code>++ease</code> or <code>++eave</code>, exactly as in the local case. In either case, we call <code>++abet:de</code> to resolve our various types of output into actual moves, as described in the local case. Finally, we call <code>++posh</code> to update our raft, putting the modified rung into the raft. </p><p>We&#39;ll first trace through <code>++do</code>. </p><pre> ++ do
587− |= [now=@da [who=ship him=ship] syd=@tas ruf=raft]
588− =+ ^= rug ^- rung
589− =+ rug=(~(get by hoy.ruf) him)
590− ?^(rug u.rug *rung)
591− =+ ^= red ^- rede
592− =+ yit=(~(get by rus.rug) syd)
593− ?^(yit u.yit `rede`[~2000.1.1 ~ [~ *rind] *dome])
594− ((de now ~ ~) [who him] syd red ran.ruf)
595−</pre><p>If we already have a rung for this foreign ship, then we use that. Otherwise, we create a new blank one. If we already have a rede in this rung, then we use that, otherwise we create a blank one. An important point to note here is that we let <code>ref</code> in the rede be <code>[~ *rind]</code>. Recall, for domestic desks <code>ref</code> is null. We use this to distinguish between foreign and domestic desks in <code>++de</code>. </p><p>With this information, we create a <code>++de</code> core as usual. </p><p>Although we&#39;ve already covered <code>++ease</code> and <code>++eave</code>, we&#39;ll go through them quickly again, highlighting the case of foreign request. </p><pre> ++ ease :: release request
596− |= hen=duct
597− ^+ +&gt;
598− ?~ ref +&gt;
599− =+ rov=(~(got by qyx) hen)
600− =. qyx (~(del by qyx) hen)
601− (mabe rov (cury best hen))
602− =. qyx (~(del by qyx) hen)
603− |- ^+ +&gt;+.$
604− =+ nux=(~(get by fod.u.ref) hen)
605− ?~ nux +&gt;+.$
606− %= +&gt;+.$
607− say [[hen [(scot %ud u.nux) ~] for [u.nux syd ~]] say]
608− fod.u.ref (~(del by fod.u.ref) hen)
609− bom.u.ref (~(del by bom.u.ref) u.nux)
610− ==
611−</pre><p>Here, we still remove the duct from our cult (we maintain a cult even for foreign desks), but we also need to tell the foreign desk to cancel our subscription. We do this by sending a request (by appending to <code>say</code>, which gets resolved in <code>++abet:de</code> to a <code>%want</code> kiss to ames) to the foreign ship to cancel the subscription. Since we don&#39;t anymore expect a response on this duct, we remove it from <code>fod</code> and <code>bom</code>, which are the maps between ducts, raves, and request sequence numbers. Basically, we remove every trace of the subscription from our request manager. </p><p>In the case of <code>++eave</code>, where we&#39;re creating a new request, everything is exactly identical to the case of the local request except <code>++duce</code>. We said that <code>++duce</code> simply puts the request into our cult. This is true for a domestic request, but distinctly untrue for foreign requests. </p><pre> ++ duce :: produce request
612− |= [hen=duct rov=rove]
613− ^+ +&gt;
614− =. qyx (~(put by qyx) hen rov)
615− ?~ ref +&gt;.$
616− |- ^+ +&gt;+.$ :: XX why?
617− =+ rav=(reve rov)
618− =+ ^= vaw ^- rave
619− ?. ?=([%&amp; %v *] rav) rav
620− [%| [%ud let.dom] `case`q.p.rav r.p.rav]
621− =+ inx=nix.u.ref
622− %= +&gt;+.$
623− say [[hen [(scot %ud inx) ~] for [inx syd ~ vaw]] say]
624− nix.u.ref +(nix.u.ref)
625− bom.u.ref (~(put by bom.u.ref) inx [hen vaw])
626− fod.u.ref (~(put by fod.u.ref) hen inx)
627− ==
628−</pre><p>If we have a request manager (i.e. this is a foreign desk), then we do the approximate inverse of <code>++ease</code>. We create a rave out of the given request and send it off to the foreign desk by putting it in <code>say</code>. Note that the rave is created to request the information starting at the next revision number. Since this is a new request, we put it into <code>fod</code> and <code>bom</code> to associate the request with its duct and its sequence number. Since we&#39;re using another sequence number, we must increment <code>nix</code>, which represents the next available sequence number. </p><p>And that&#39;s really it for this side of the request. Requesting foreign information isn&#39;t that hard. Let&#39;s see what it looks like on the other side. When we get a request from another ship for information on our ship, that comes to us in the form of a <code>%wart</code> from ames. </p><p>We handle a <code>%wart</code> in <code>++call</code>, right next to where we handle the <code>%warp</code> case. </p><pre> %wart
629− ?&gt; ?=(%re q.q.hic)
630− =+ ryf=((hard riff) s.q.hic)
631− :_ ..^$
632− :~ :- hen
633− :^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) r.q.hic]
634− %c
635− [%warp [p.p.q.hic p.p.q.hic] ryf]
636− ==
637−</pre><p>Every request we receive should be of type <code>riff</code>, so we coerce it into that type. We just convert this into a new <code>%warp</code> kiss that we pass to ourself. This gets handled like normal, as a local request. When the request produces a value, it does so like normal as a <code>%writ</code>, which is returned to <code>++take</code> along the path we just sent it on. </p><pre> %writ
638− ?&gt; ?=([@ @ *] tea)
639− =+ our=(need (slaw %p i.tea))
640− =+ him=(need (slaw %p i.t.tea))
641− :_ ..^$
642− :~ :- hen
643− [%pass ~ %a [%want [our him] [%r %re %c t.t.tea] p.+.q.hin]]
644− ==
645−</pre><p>Since we encoded the ship we need to respond to in the path, we can just pass our <code>%want</code> back to ames, so that we tell the requesting ship about the new data. </p><p>This comes back to the original ship as a <code>%waft</code> from ames, which comes into <code>++take</code>, right next to where we handled <code>%writ</code>. </p><pre> %waft
646− ?&gt; ?=([@ @ ~] tea)
647− =+ syd=(need (slaw %tas i.tea))
648− =+ inx=(need (slaw %ud i.t.tea))
649− =+ ^= zat
650− =&lt; wake
651− (knit:(do now p.+.q.hin syd ruf) [inx ((hard riot) q.+.q.hin)])
652− =^ mos ruf
653− =+ zot=abet.zat
654− [-.zot (posh q.p.+.q.hin syd +.zot ruf)]
655− [mos ..^$(ran.ruf ran.zat)] :: merge in new obj
656−</pre><p>This gets the desk and sequence number from the path the request was sent over. This determines exactly which request is being responded to. We call <code>++knit:de</code> to apply the changes to our local desk, and we call <code>++wake</code> to update our subscribers. Then we call <code>++abet:de</code> and <code>++posh</code> as normal (like in <code>++eave</code>). </p><p>We&#39;ll examine <code>++knit</code> and <code>++wake</code>, in that order. </p><pre> ++ knit :: external change
657− |= [inx=@ud rot=riot]
658− ^+ +&gt;
659− ?&gt; ?=(^ ref)
660− |- ^+ +&gt;+.$
661− =+ ruv=(~(get by bom.u.ref) inx)
662− ?~ ruv +&gt;+.$
663− =&gt; ?. |(?=(~ rot) ?=(&amp; -.q.u.ruv)) .
664− %_ .
665− bom.u.ref (~(del by bom.u.ref) inx)
666− fod.u.ref (~(del by fod.u.ref) p.u.ruv)
667− ==
668− ?~ rot
669− =+ rav=`rave`q.u.ruv
670− %= +&gt;+.$
671− lim
672− ?.(&amp;(?=(| -.rav) ?=(%da -.q.p.rav)) lim `@da`p.q.p.rav)
673− ::
674− haw.u.ref
675− ?. ?=(&amp; -.rav) haw.u.ref
676− (~(put by haw.u.ref) p.rav ~)
677− ==
678− ?&lt; ?=(%v p.p.u.rot)
679− =. haw.u.ref
680− (~(put by haw.u.ref) [p.p.u.rot q.p.u.rot q.u.rot] ~ r.u.rot)
681− ?. ?=(%w p.p.u.rot) +&gt;+.$
682− |- ^+ +&gt;+.^$
683− =+ nez=[%w [%ud let.dom] ~]
684− =+ nex=(~(get by haw.u.ref) nez)
685− ?~ nex +&gt;+.^$
686− ?~ u.nex +&gt;+.^$ :: should never happen
687− =. +&gt;+.^$ =+ roo=(edis ((hard nako) u.u.nex))
688− ?&gt;(?=(^ ref.roo) roo)
689− %= $
690− haw.u.ref (~(del by haw.u.ref) nez)
691− ==
692−</pre><p>This is kind of a long gate, but don&#39;t worry, it&#39;s not bad at all. </p><p>First, we assert that we&#39;re not a domestic desk. That wouldn&#39;t make any sense at all. </p><p>Since we have the sequence number of the request, we can get the duct and rave from <code>bom</code> in our request manager. If we didn&#39;t actually request this data (or the request was canceled before we got it), then we do nothing. </p><p>Else, we remove the request from <code>bom</code> and <code>fod</code> unless this was a subscription request and we didn&#39;t receive a null riot (which would indicate the last message on the subscription). </p><p>Now, if we received a null riot, then if this was a subscription request by date, then we update <code>lim</code> in our request manager (representing the latest time at which we have complete information for this desk) to the date that was requested. If this was a single read request, then we put the result in our simple cache <code>haw</code> to make future requests faster. Then we&#39;re done. </p><p>If we received actual data, then we put it into our cache <code>haw</code>. Unless it&#39;s a <code>%w</code> request, we&#39;re done. </p><p>If it is a <code>%w</code> request, then we try to get the <code>%w</code> at our current head from the cache. In general, that should be the thing we just put in a moment ago, but that is not guaranteed. The most common case where this is different is when we receive desk updates out of order. At any rate, since we now have new information, we need to apply it to our local copy of the desk. We do so in <code>++edis</code>, and then we remove the stuff we just applied from the cache, since it&#39;s not really a true “single read”, like what should really be in the cache. </p><pre> ++ edis :: apply subscription
693− |= nak=nako
694− ^+ +&gt;
695− %= +&gt;
696− hit.dom (~(uni by hit.dom) gar.nak)
697− let.dom let.nak
698− lat.ran %+ roll (~(tap in bar.nak) ~)
699− =&lt; .(yeb lat.ran)
700− |= [sar=blob yeb=(map lobe blob)]
701− =+ zax=(blob-to-lobe sar)
702− %+ ~(put by yeb) zax sar
703− hut.ran %+ roll (~(tap in lar.nak) ~)
704− =&lt; .(yeb hut.ran)
705− |= [sar=yaki yeb=(map tako yaki)]
706− %+ ~(put by yeb) r.sar sar
707− ==
708−</pre><p>This shows, of course, exactly why nako is defined the way it is. To become completely up to date with the foreign desk, we need to merge <code>hit</code> with the foreign one so that we have all the revision numbers. We update <code>let</code> so that we know which revision is the head. </p><p>We merge the new blobs in <code>lat</code>, keying them by their hash, which we get from a call to <code>++blob-to-lobe</code>. Recall that the hash is stored in the actual blob itself. We do the same thing to the new yakis, putting them in <code>hut</code>, keyed by their hash. </p><p>Now, our local dome should be exactly the same as the foreign one. </p><p>This concludes our discussion of <code>++knit</code>. Now the changes have been applied to our local copy of the desk, and we just need to update our subscribers. We do so in <code>++wake:de</code>. </p><pre> ++ wake :: update subscribers
709− ^+ .
710− =+ xiq=(~(tap by qyx) ~)
711− =| xaq=(list ,[p=duct q=rove])
712− |- ^+ ..wake
713− ?~ xiq
714− ..wake(qyx (~(gas by *cult) xaq))
715− ?- -.q.i.xiq
716− &amp;
717− =+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.q.i.xiq))
718− ?^ cas
719− %= $
720− xiq t.xiq
721− ..wake ?~ u.cas (blub p.i.xiq)
722− (blab p.i.xiq p.q.i.xiq u.u.cas)
723− ==
724− =+ nao=(~(case-to-aeon ze lim dom ran) q.p.q.i.xiq)
725− ?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
726− $(xiq t.xiq, ..wake (balk p.i.xiq u.nao p.q.i.xiq))
727− ::
728− |
729− =+ mot=`moot`p.q.i.xiq
730− =+ nab=(~(case-to-aeon ze lim dom ran) p.mot)
731− ?~ nab
732− $(xiq t.xiq, xaq [i.xiq xaq])
733− =+ huy=(~(case-to-aeon ze lim dom ran) q.mot)
734− ?~ huy
735− =+ ptr=[%ud +(let.dom)]
736− %= $
737− xiq t.xiq
738− xaq [[p.i.xiq [%| ptr q.mot r.mot s.mot]] xaq]
739− ..wake =+ ^= ear
740− (~(lobes-at-path ze lim dom ran) let.dom r.p.q.i.xiq)
741− ?: =(s.p.q.i.xiq ear) ..wake
742− =+ fud=(~(make-nako ze lim dom ran) u.nab let.dom)
743− (bleb p.i.xiq let.dom fud)
744− ==
745− %= $
746− xiq t.xiq
747− ..wake =- (blub:- p.i.xiq)
748− =+ ^= ear
749− (~(lobes-at-path ze lim dom ran) u.huy r.p.q.i.xiq)
750− ?: =(s.p.q.i.xiq ear) (blub p.i.xiq)
751− =+ fud=(~(make-nako ze lim dom ran) u.nab u.huy)
752− (bleb p.i.xiq +(u.nab) fud)
753− ==
754− ==
755− --
756−</pre><p>This is even longer than <code>++knit</code>, but it&#39;s pretty similar to <code>++eave</code>. We loop through each of our subscribers <code>xiq</code>, processing each in turn. When we&#39;re done, we just put the remaining subscribers back in our subscriber list. </p><p>If the subscriber is a single read, then, if this is a foreign desk (note that <code>++wake</code> is called from other arms, and not only on foreign desks). Obviously, if we find an identical request there, then we can produce the result immediately. Referential transparency for the win. We produce the result with a call to <code>++blab</code>. If this is a foreign desk but the result is not in the cache, then we produce <code>++blub</code> (canceled subscription with no data) for reasons entirely opaque to me. Seriously, it seems like we should wait until we get an actual response to the request. If someone figures out why this is, let me know. At any rate, it seems to work. </p><p>If this is a domestic desk, then we check to see if the case exists yet. If it doesn&#39;t, then we simply move on to the next subscriber, consing this one onto <code>xaq</code> so that we can check again the next time around. If it does exist, then we call <code>++balk</code> to fulfill the request and produce it. </p><p><code>++balk</code> is very simple, so we&#39;ll describe it here before we get to the subscription case. </p><pre> ++ balk :: read and send
757− |= [hen=duct oan=@ud mun=mood]
758− ^+ +&gt;
759− =+ vid=(~(read-at-aeon ze lim dom ran) oan mun)
760− ?~ vid (blub hen) (blab hen mun u.vid)
761−</pre><p>We call <code>++read-at-aeon</code> on the given request and aeon. If you recall, this processes a <code>mood</code> at a particular aeon and produces the result, if there is one. If there is data at the requested location, then we produce it with <code>++blab</code>. Else, we call <code>++blub</code> to notify the subscriber that no data can ever come over this subscriptioin since it is now impossible for there to ever be data for the given request. Because referential transparency. </p><p>At any rate, back to <code>++wake</code>. If the given rave is a subscription request, then we proceed similarly to how we do in <code>++eave</code>. We first try to get the aeon referred to by the starting case. If it doesn&#39;t exist yet, then we can&#39;t do anything interesting with this subscription, so we move on to the next one. </p><p>Otherwise, we try to get the aeon referred to by the ending case. If it doesn&#39;t exist yet, then we produce all the information we can. We call <code>++lobes-at-path</code> at the given aeon and path to see if the requested path has actually changed. If it hasn&#39;t, then we don&#39;t produce anything; else, we produce the correct nako by calling <code>++bleb</code> on the result of <code>++make-nako</code>, as in <code>++eave</code>. At any rate, we move on to the next subscription, putting back into our cult the current subscription with a new start case of the next aeon after the present. </p><p>If the aeon referred to by the ending case does exist, then we drop this subscriber from our cult and satisfy its request immediately. This is the same as before -- we check to see if the data at the path has actually changed, producing it if it has; else, we call <code>++blub</code> since no more data can be produced over this subscription. </p><p>This concludes our discussion of foreign requests. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/dill/index.htmldeleted−1
@@ -1 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="dill-">Dill </h1><p>Our terminal driver. </p><p>Unix sends keyboard events to <code>%dill</code> from either the console or telnet, and <code>%dill</code> produces terminal output. The only app that should directly talk to <code>%dill</code> is the terminal app. Command-line apps are run by, receive input from, and produce output to, the <code>%shell</code> app, which is controlled by <code>%terminal</code>, which talks to <code>%dill</code>, which talks to unix. Clay also uses <code>%dill</code> directly to print out the filesystem change events, but this is questionable behavior. </p><p><code>%dill</code> has two main components. First, it controls the terminal on a very basic, event-by-event level. This includes keeping track of things like the dimensions of the terminal, the prompt type (plain text or password), which duct to produce effects on, and so forth. Second, it handles terminal events, keystroke by keystroke. Most characters are simply pushed onto the buffer and blitted to the screen, but some characters, including control-modified keys, arrow keys, etc. require special handling. Most of the readline functionality is in <code>%dill</code>. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/eyre/index.htmldeleted−9
@@ -1,9 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="eyre-">Eyre </h1><p>Our http server. </p><p>Unix sends http messages to <code>%eyre</code>, and <code>%eyre</code> produces http messages in response. In general, apps and vanes do not call <code>%eyre</code>; rather, <code>%eyre</code> calls apps and vanes. <code>%eyre</code> uses <code>%ford</code> and <code>%gall</code> to functionally publish pages and facilitate communication with apps. </p><p><code>%eyre</code> primarily parses web requests and handles them in a variety of ways, depending on the control string. Nearly all of these are essentially stateless, like functional publishing with <code>%ford</code>. Additionally, there&#39;s a fairly significant component that handles <code>%gall</code> messaging and subscriptions, which must be stateful. </p><h2><div id="reference">Reference</div></h2><h3 id="state-">State </h3><p>Stored </p><ul><li><p><code>++bolo</code> </p></li><li><p><code>++cyst</code> </p></li><li><p><code>++stem</code> </p></li></ul><p>Runtime </p><ul><li><p><code>perk</code> </p><ol><li><p><code>perk-auth</code> </p></li></ol></li><li><p><code>pest</code> </p></li><li><p><code>even</code> </p></li></ul><h3 id="cores-">Cores </h3><ul><li><p><code>++handle</code> </p><ol><li><p><code>++parse</code> </p><ul><li><p><code>++as...</code> </p></li></ul></li></ol></li><li><p><code>++ya</code> </p></li><li><p><code>++ix</code> </p></li></ul><h2><div id="commentary">Commentary</div></h2><p>Let us follow the loading of a simple cli app, as it bounces from browser to server to browser and back. </p><h3 id="initial-request--a-id----init------">Initial request ;a(id “init”); </h3><p>An http request for <code>http://sampel-sipnym.urbit.org/cli</code> will be <a href="dns">redirected</a> to the <code>%eyre</code> on ~sampel-sipnym, and come in as a <code>%this</code> kiss. </p><p>From arvo, requests enter <code>++call</code>, which after some type reification are passed along to <code>++apex:ye</code>. In the case of a <code>%this</code> kiss, its components are parsed(see <code>++zest:epur</code>, <code>++eat-headers</code>) and handed off to <code>++handle</code>, wrapped in <code>++emule</code> to produce a <code>++fail</code> page in case of error. <code>++apex:handle</code> will <code>++process</code> the request to a <code>pest</code> or a <code>++done</code> core, and in the former case <code>++resolve</code> the pest into an outgoing card. </p><p>XX it also seems to affect the current ship, test that serving ship name is consistently correct </p><p>The pest is produced by <code>++process</code>, which will first further <code>++parse</code> the request, and if this does not make the response immediately obvious, <code>++process-parsed</code> the resulting <code>perk</code>. </p><p><code>++parse</code> produces the <code>perk</code>, by attempting to interpret the <code>pork</code>(url path) <a href="#mage"><code>++as-magic-filename</code></a>, <code>++as-beam</code>, and <code>++as-aux-request</code>. In this case, <code>/cli</code> is parsed by the second case as a <code>%beam</code> query to <code>/=cli=</code>: a path which starts with a valid ship name is expected to be a full clay(well, ford) path, and one starting with a term implies the current serving ship and a case of <code>0</code>, the current revision. </p><p>XX spur: when the desks are merged, <code>/cli</code> shall point to <code>/=main=/pub/cli</code> </p><p>The parsed <code>perk</code> generates a <code>%f %boil</code> note, <code>mark</code>ed as its extension(here defaulting to <code>%urb</code>) and <code>wire</code>d with <code>~</code> to return unaltered to the client. It goes on to <code>++resolve</code> by being passed to <code>++ford-get-beam</code>, which translates the perk it into a <code>%boil</code> <code>++ford-req</code>, adding an <code>++fcgi</code> path-segment containing query string and <code>++fcgi-cred:for-client</code> auth information. </p><p><code>%ford</code>s translation of <code>/=cli=/hymn/hook</code> to a self-refreshing <code>%urb</code> html page <a href="/docs/learn/arvo/arvo-internals/ford#commentary">deserves its own commentary</a>, but we resume in <code>%eyre</code> when the <code>%made</code> sign arrives in <code>++take</code>, and soon after <code>++axon:ye</code>. There the <code>wire</code>, or rather the <code>whir</code> it has been verified to be, determines that the response should be served immediately. However, as the mark is not <code>%mime</code>, another trip to <code>%ford</code> is required to encode it, on the same wire; afterwards, the value of the <code>%mime</code> cage is verified to be of the correct type, and finally delivered back up the requesting duct as a successful <code>%thou</code> HTTP response. </p><p>XX <code>%cast %mime</code> used to be in ford-get-beam, is there a reason it was removed? </p><h2 id="back-into-the-breach--or--auxilary-requests-">Back into the breach, or: auxilary requests </h2><p>Now, it was mentioned that this result is self-refreshing: the <code>%urb</code> translation door injects a <code>;script@&quot;/~/on/{deps}.js&quot;</code> into every page, <code>deps</code> is a ford-readable hash of the set of resources that page construction depended on. </p><p>This triggers another <code>%this</code> request. Its handling is identical to that of <code>/cli</code> up until <code>++parse</code>, where it is seen not <code>++as-beam</code> but <code>++as-aux-request</code>(auxillary requests starting with <code>/~/</code> or <code>/~~/</code>). <code>/on/[hash]</code> is a long-<code>%poll</code>, which <code>++process-parsed</code>, for a <code>.js</code> mark, answers with a direct <code>%js</code>. Its contents are the static <code>++poll:js</code>, which initiates the long-polling loop, run against an injected <code>urb.js</code> of <code>{poll:[hash]}</code>. </p><p>A <code>%js</code> <code>pest</code> is <code>resolve</code>d as a <code>text/javascript</code> success <code>%this</code>. </p><p>When <code>poll.js</code> is received by the client, it opens an <code>XMLHttpRequest</code> for <code>/~/on/{window.urb.poll}.json</code>, bringing us back to <code>%poll:process</code>. </p><p>In the case of a non-<code>%js</code> <code>/~/on/</code>, <code>%poll:process-parsed</code> turns into a <code>++new-dependency</code>, which stores the listening duct, and <code>pass-note</code>s a <code>%wasp</code> with the deps-hash back to <code>%ford</code> whence it came. While this occured, the page has loaded. </p><p>Some indeterminate amount of time afterwards, with dropped <code>/~/on/{...}.json</code>s being retried upon expiring and also being stored, a <code>%news</code> sign arrives in <code>++axon</code>, and the hash in question is retrieved from the wire, and the listening long-polls retrieved by the hash. Each receives a 205 “Reload parent view” HTTP response, which <code>poll.js</code> dutifully executes, and a fixed typo of markdown is rendered. </p><h2 id="authentication-">Authentication </h2><p>Now, while this accurately reflects the presentation of e.g. a markdown file, <code>/cli</code> is an application front-end, and one that permits only owner access. Its second script is <code>@&quot;/~~/~/at/main/lib/urb.js&quot;</code>, semantically equivalent to <code>/~/as/own/~/at/main/lib/urb.js</code>, and handled as follows. </p><p>In <code>++as-aux-request</code>, <code>%as %own</code> becomes <code>%auth %get our</code> perk, which <code>++process</code> passes to <code>++process-parsed</code> passes to <code>++process-auth</code>. There, a <code>yac</code> “ya” core is built <code>++for-client</code>: a <code>++cookie-prefix</code>, which is just the serving ship name, is used to get a <code>++session-from-cookies</code>, here nil as the client has no cookie set. In lieu of a cookie, a <code>++new-ya</code> is constructed, with a random token <code>hole</code> and a <code>++new-cyst</code> which fills out <code>cyst</code> session state from request data. </p><p>Returning to <code>++process-auth</code>, <code>%get</code> checks if the yac is authenticated with the requested credentials(<code>anon</code> requests are always granted), which for the fresh new <code>cyst</code> is not the case (more on success <a href="#auth-ok">later</a>). Unless authentiacting as a <a href="#xeno">foreign ship</a>, the only thing left is to <code>++show-login-page</code>, which detects that the requested resource is not <code>%html</code>, and produces a <code>%red</code> pest. For <code>%js</code>, <code>%red</code>irections <code>++resolve</code> to <code>++auth-redir:js</code>, a line of javascript which prepends <code>/~~</code> to the url path. </p><p>The owner-authenticated main page request similarly ends in <code>++show-login-page</code>, which for the empty session is an <code>[%htme ++login-page:xml]</code>, <code>resolve</code>d to <code>++give-html</code> with a 401 “unathorized”. </p><p>The login page shows a simple prompt, and requests <code>/~/at/auth.js</code> to handle the submission. And so we are, once again, attempting to divine if what we&#39;re doing makes sense <code>++as-aux-request</code>. </p><p>To understand <code>/~/at</code>, there will first be a brief diversion to <code>~/auth.json</code>. <code>auth.json</code>, perk <code>[%auth %json]</code>, in <code>++process-auth</code> serves <code>++stat-json:ya</code>, containing such information as the serving ship, which identities are associated with this session, and <code>oryx</code>, a CSRF token. An oryx must be present on all stateful requests, in this case executing a log in. It also saves the new/old session using <code>abet</code>. </p><p>XX explain <code>ixor</code> here and not <a href="#ixor">later</a>? </p><p><code>/~/at</code> is an alternate interface, which injects <code>auth.json</code> data into the requested file. <code>/~/at/auth.js</code>, then, is a request for the built-in <code>auth:js</code> (parsed to and processed from an <code>[%auth %js ~]</code> perk), with session data added as <code>window.urb</code>. And indeed, <code></code>[<code>%js /~/at/auth]</code><code> is parsed to </code><code>[%auth at [</code>%js /auth]<code></code>, which in <code>++process-auth</code> is re-<code>process</code>ed to <code>[%js ++auth:js]</code>, which is <code>++resolve</code>d after an <code>++add-json</code> of the relevant data. The yac cookies are also passed to <code>resolve</code>, which <code>++add-cookies</code> injects into the <code>httr</code>. </p><p>It is at this point that there is first occasion for user input, namely the password. </p><p>The <code>auth:js</code> script sends a <code>PUT</code> request, also to <code>/~/auth.json</code>. In <code>parse</code>, the first nontrivial <code>++check-oryx</code> occurs, <code>++grab-body</code> the request oryx and ensuring it is recorded for the session. The request parsed with <code>++need-body</code> to a <code>[%auth %try {password}]</code> perk. <code>%get:process-auth</code> checks it against <code>++load-secret</code>, upon success updates the session with <code>++logon:ya</code>, and serves a fresh <code>auth.json</code> which reflects the changed <code>user</code>. Upon receiving this, the page is refreshed to retry the original request. </p><h3 id="post-authentication--app-communication---a-id----auth-ok------">Post-authentication: app communication. &lt;a id=“auth-ok”/&gt; </h3><p>Upon refresh, <code>/~~/cli</code> brings us for the third time to <code>%get:process-auth</code>, but this time the cookie is set, and the <code>yac</code> fetched contains the serving ship as authenticated. The <code>++handle</code> sample is updated to reflect the requesting ship, and the <code>process</code> continues for the rest of the pork, once again serving the ford page. </p><p>The <code>/~/on/[deps].json</code> poll starts anew, and <code>/~~/~/at/main/lib/urb.js</code> we now know to serve the window.urb necessary to make requests, and the <code>urb.js</code> standard library which extends it with a number of wrappers to them and other useful functions. </p><p>One of those functions is <code>urb.bind</code>, which is used to subscribe to application data. Userspace javascript sets <code>urb.appl</code> to <code>/tic</code>, and binds <code>lines</code> to a <code>;pre;</code> text display, using a callback. </p><p>This triggers a <code>PUT</code> to <code>/~/is/{ixor}/cli/lines.json</code>, where <code>ixor</code> is a hash of <code>oryx</code> that identifies the connection. <code>++as-aux-request</code>, an <code>%is</code> is a <code>%subs</code> subscription update update, which for <code>%put</code> forwards to <code>++add-subs:ix</code>, the ix core fetched <code>++for-view</code> by hashing the request <code>++oryx-to-ixor</code>. </p><p>&lt;a id=“ixor”/&gt; A view has all the state associated with a client that must be remembered between events. In this case, this is what app/path the request duct is associated with; but mainly, <code>++add-subs:ix</code> will <code>pass-note</code> to <code>%gall</code> so it <code>%show</code>s the data on the path, current and future. </p><p>This will immediately(assuming the ship is local) result in a <code>%nice</code> by the <code>/cli</code> app, returning <code>{ok:true}</code> <code>++nice-json</code> to <code>urb.bind</code>&#39;s second callback as <code>{ok:true}</code>. The initial <code>%rush</code> results also arrive, and in <code>++axon</code> are converted to json using <code>++back</code>(ford <code>%cast</code> wrapper), and when <code>%made</code> get passed to <code>++get-rush:ix</code>. There the source application/path are decoded by duct, and then the full event goes to <code>++get-even</code>; <code>++add-even</code> inserts it to the queue, and as there is no long poll it simply stays there. </p><p>Upon receipt, the client realizes the long-poll isn&#39;t actually running, so that is started using <code>urb.poll</code>. At <code>/~/of/{ixor}</code>, perk <code>[%view ixor ~ {sequence-number}]</code>, it is <code>process</code>ed by <code>++poll:ix</code> (the cyst is retrieved by <code>++ire-ix</code> form global state, using the perk <code>ixor</code>): the sequence number is in the past, so the previously received <code>%rush</code> is <code>++give-even</code>. After deleting the previous message in the queue and invoking <code>++pass-took</code> to signal <code>%gall</code> of this occurrence, the data is annotated with the source app+path <code>++subs-to-json</code>, and returned to the polling duct. </p><p>On the client, the user callback receives the <code>/cli</code> history, and displays it on the page. The <code>/~/of</code> long poll is continued, this time reaching <code>++poll:ix</code> with the “pending” sequence number, and being stored in the <code>cyst</code> for its troubles. </p><p>Its next update proceeds idenitcally, but first it must be triggered, which happens when the user enters “(add 2 2)n”, firing an <code>urb.send</code> from the event handler. This sends a <code>POST</code> request to <code>/~/to/cli/json.json</code>, perk <code>%mess</code>, <code>++process</code>ed to a <code>%g %mess</code>. Were the mark not <code>%json</code>, a <code>%ford</code> conversion would occur first, and <code>%made:axon</code> would send the gall message proper. In either case, eventually a <code>%mean</code> or <code>%nice</code> arrives, is encoded as json, and sent to the client callback. </p><h2 id="a-path-not-taken--magic-filenames--a-id----mage------">A path not taken: magic filenames &lt;a id=“mage”/&gt; </h2><p>The <code>/robots.txt</code> and <code>/favicon.(ico|png)</code> files are static, and served immediately when caught by a <code>++parse</code>. </p><p>XX index.html? </p><h2 id="a-path-not-taken--foreign-auth--a-id----xeno------">A path not taken: foreign auth &lt;a id=“xeno”/&gt; </h2><p>While this example details a login <code>/~/as/own</code>, it is possible to be authenticated as any ship on the network. A request for such seen in <code>%get:process-auth</code> is passed to <code>++foreign-auth:ya</code>, which sends an <code>%ames /lon</code> message to the ship in question. The foreign ship stores the inquiry, calculates(the local) <code>++our-host</code> and responds with a <code>/hat</code>, containing the redirection host, which is stored by <code>++foreign-hat</code>; it is later used to send the client to a <code>/~/am</code> url on the foreign client, which acts as a normal login page but later sends the client back. XX expand, basically the status quo is you&#39;re logged in and <code>/~/as/foo</code> is ignored, just setting your <code>urb.user</code> XX </p><h3 id="a-path-not-taken--deauthentication-">A path not taken: deauthentication </h3><p><code>/~/away</code>, perk <code>[%away ~]</code>, produces a static <code>++logout-page:xml</code>, which also uses <code>/~/at/auth.js</code>, to send a <code>DELETE /~/auth.json</code>, perk <code>[%auth %del]</code>. This executes <code>++logoff:ya</code> for the cookie session, resolving to <code>++abut</code> to wipe it from memory. </p><h3 id="a-path-not-taken--unsubscription-">A path not taken: unsubscription </h3><p><code>DELETE /~/is/app/path/within</code> works much like <code>PUT /~/is/app/path/within</code>, <code>++del-subs:ix</code> acting as reverse of <code>++add-subs</code> by deleting the duct binding and sending <code>%g %nuke</code>. </p><p>XX unmentioned arms: abet, add-poll, adit, ames-gram, anon, ares-to-json, bolo, cyst, doze, even, ford-kill, get-mean, gift, give-json, give-thou, gram, hapt, hasp, host-to-ship, ix, ixor, js, kiss, load, mean-json, move, note, pass-note, perk, perk-auth, pest, poke-test, print-subs, render-tang, resp, root-beak, scry, ses-authed, ses-ya, sign, silk, sine, stay, stem, teba, titl, to-oryx, urb, wait-era, wake, whir, wush, xml, ya, ye </p><h3 id="appendix-a--dns--a-id----dns------">Appendix A: DNS &lt;a id=“dns”/&gt; </h3><p>The <code>*.urbit.org</code> domain can be used to access destroyers and cruisers. In the common case oh hosted ships, this is done by dynamic DNS directly to the hosting instance. We do not speak of the uncommon case. When ports are blocked and infrastructure crumbles around you, only imported martian networking can be trusted: the <code>%get</code> and <code>%got</code> <a href="">gram</a>s are used to proxy <a href=""><code>%this</code> requests</a> and <a href=""><code>%thou</code> responses</a> respectively. </p><h2><div id="specification">Specification</div></h2><p>The <code>%eyre</code> vane serves one purpose: receiving inbound HTTP requests from browsers and clients pretending to be browsers. To facilitate this communication, <code>%eyre</code> does two things: 1. provide an API for traditional clients to talk to; and 2. provide a mechanism for saving state that allows the server to keep track of identities/sessions, subscription data, and active connections. </p><p>This document outlines the following: </p><p>1. <a href="#perk"><code>perk</code></a>, a <code>pork</code> subset that defines what URLs the client can send to <code>%eyre</code>. </p><p>2. <a href="#client">the values stored on the client</a>, both statically in cookies and dynamically as the <code>window.urb</code> object, which facilitate this transaction. </p><p>3. <a href="#kiss"><code>kiss</code></a>, the requests <code>%eyre</code> will accept. </p><p>4. <a href="#gift"><code>gift</code></a>, the responses it will give to those requests. </p><p>5. <a href="#note"><code>note</code></a>, the set of arvo requests that <code>%eyre</code> makes to the other vanes. </p><p>6. <a href="#whir"><code>whir</code></a>, a <code>wire</code> subset, the associated dynamic state </p><p>7. <a href="#sign"><code>sign</code></a>, the responses <code>%eyre</code> accepts </p><p>8. <a href="#bolo"><code>bolo</code></a>, the state stored between separate events. </p><h2 id="1--url-structure-">1. URL structure </h2><p>There exist several URL forms accepted by <code>%eyre</code>. </p><h3 id="1-1-functional-request-">1.1 Functional request </h3><p>The simplest of them is a static <code>%f</code> functional publish request: </p><pre> GET /[ship]/[desk]/[case]/path/to/file.[mark]
2−</pre><p>e.g. </p><pre> /~pittyp-pittyp/main/5/lib/urb.js
3−</pre><p>A <code>case</code> of 0 signifies the most recent version. </p><p>If no file extension is provided, the default <code>mark</code> is <code>%urb</code>, which consists of <code>%html</code> injected with an auto-refresh script. </p><p>A shorter form: </p><pre> /path/to.[mark]
4−</pre><p>is prepended with the <a href="#prefix">default request path</a>. For example, if <code>%eyre</code> is configured with a root of <code>/&lt;our&gt;/main/0/pub</code>, then <code>/doc/arvo</code> is interpreted as a request for <code>/=main=/pub/doc/arvo.urb</code>. </p><p>Auxiliary paths start with <code>/~/</code>, and provide other functionality, such as: </p><h3 id="1-2-auto-reload-">1.2 Auto-reload </h3><p>When a new version of a page becomes available, it is useful to propagate it to the client. The <code>%f</code> vane manages the particulars, and provides an update token along with all published pages. The <code>/~/on</code> long-polling endpoint makes use of that token, which is a hash of the server-stored dependency set. </p><ul><li><p><code>/~/on/[hash].json</code> retuns <code>true</code> when a page may require updating. </p></li><li><p><code>/~/on/[hash].js</code> is a lightweight script that polls for the above. It is primarily used in error messages. </p></li></ul><a id="auth"></a><h2 id="1-3-authentication-">1.3 Authentication </h2><p>Authenticated requests are accomplished through sessions, tracked with cookies which are set on the first such request. </p><ul><li><p><code>/~/as/[user]/...</code> is an authenticated request to <code>...</code>, where <code>user</code> can be a <code>@p</code> ship, <code>&#39;own&#39;</code>, <code>&#39;any&#39;</code>, or <code>&#39;anon&#39;</code>. </p><ol><li><p><code>&#39;anon&#39;</code> is a randomly-generated per-session submarine, and requires no further authentication. </p></li><li><p><code>&#39;own&#39;</code> represents the serving ship. The short form of <code>/~/as/own/</code> is <code>/~~/</code> </p></li><li><p><code>&#39;any&#39;</code> requires a network ship, chosen with a prompt if unknown. The short form of <code>/~/as/any/</code> is <code>/_/</code> </p></li><li><p>Auth requests are handled in three ways: </p></li><li><p>I. If the session is associated with the <code>ship</code>, serve <code>...</code>, storing the ship as the session&#39;s default ship. For example, <code>/~/as/sivtyv-barnel/main/pub/test.html</code> is an authenticated request of <code>/main/pub/test.html</code> with the identity of <code>~sivtyv-barnel</code>. </p></li><li><p>II. If the session is not associated with the <code>ship</code> in the path, the client is redirected to a login page, where a password can be entered. Successful authentication results in a page refresh to the requested path. </p></li><li><p>III. otherwise, <a href="#foreign">send a message</a> to the claimed ship, and redirect the user to <code>https://[foreign-host]/~/am/[ses]/...#[current-host]&amp;?code=[code]</code> </p></li></ol></li><li><p><code>/~/am/[ses]/...#original-host</code> similarly serves a login page. Upon success, inform the <code>ship</code> of the success and redirect it back to <code>http://[original-host]/~/as/&lt;this-ship&gt;/...</code> </p></li><li><p><code>/~/away.html</code> is a log-out page. </p></li><li><p><code>/~/auth.json</code> returns <code>{ship,oryx,user,auth}</code>: the serving ship, a CSRF token, active user, and all allowed users respectively. </p></li><li><p><code>/~/at/{...}.js</code> is an alternate form of <code>/~/auth.json</code>, which injects a line into the served js file that sets <code>{ship, oryx, user, auth}</code> on the <code>window.urb</code> object. </p></li></ul><p>So far, all the paths specified have been GET requests. Authentication, however, requires sending data. This is also done at the <code>/~/auth.json</code> endpoint. </p><ul><li><p><code>POST {oryx,ship,code} /~/auth.json?PUT</code> is used by the login script to authorize a user, and returns the same result as <code>GET</code>, additionally containing either<code>{ok:true}</code> or <code>{fail:&#39;type&#39;,mess:&quot;Error message&quot;}</code> </p></li><li><p><code>POST {oryx,ship?} /~/auth.json?DELETE</code> revokes authorization. Response as above. </p></li></ul><h3 id="1-4-messaging-">1.4 Messaging </h3><ul><li><p><code>POST {oryx, wire, xyro} /~/to/[app]/[mark].json</code>, where <code>xyro</code> is data that will be converted to the <code>mark</code>. In the simplest case, <code>/~/to/hello/json.json</code> will pass <code>xyro</code> through verbatim, sending <code>[%json xyro]</code> to the <code>++poke</code> arm of app <code>%hello</code>. </p></li><li><p><code>POST {oryx, wire, xyro} /~/to/&lt;ship&gt;/[app]/[mark].json</code> is a foreign message send, as above. </p></li></ul><a id="subs"></a><h3 id="1-5-subscriptions-">1.5 Subscriptions </h3><a id="of-ixor"></a><ul><li><p><code>/~/of/[ixor]</code> is an <code>EventSource</code>: a conceptually infinite file containing a stream of events. By default, it sends a newline every 30 seconds serving to signal that the connection is alive to both the server and IP middleware. </p><ol><li><p><code>/~/of/[ixor]?poll={n}</code> is a long-polling fallback interface. Produces event number <code>{n}</code>, blocking until it occurs. Its contexts can be affected by <code>POST</code> requests with a body of <code>{oryx, wire}</code>, and a query string of <code>PUT</code> or <code>DELETE</code>. They return either <code>{mark}</code>(which may be <code>null</code>), or <a href="#mean-json"><code>{fail, mess}</code></a> </p></li></ol></li><li><p><code>/~/in/[hash].json</code> is a dual to <a href="#on-change"><code>/~/on</code></a>. It binds <code>mod</code> events, which echo the requesting token. </p></li><li><p><code>/~/is/[app]/path/to.[mark]</code> binds <code>rush</code> events, formatted with a first line of <code>[app] /path/to</code>, and the rest containing subscription data. Additionally, <code>mean</code> events formatted similarly may arrive, also converted to the relevant mark. </p></li></ul><a id="temp"></a><h3 id="1-6-ablative-">1.6 Ablative </h3><p>These interfaces will temporarily exist to aid development, and are to be considered unstable. </p><ul><li><p><code>/~/debug/...</code> access normally inaccessible pages. For example, <code>/~/debug/as.html</code> will present the login page, regardless of current session status. </p></li></ul><h2 id="2--client-state--a-id----client------">2. Client state ;a(id “client”); </h2><p>Some information is stored on, and provided to, browser clients </p><h3 id="2-1-cookies-">2.1 Cookies </h3><p>Authenticated users receive a cookie on the domain of <code>*.urbit.org</code>. The cookie contains a client session token, keyed by the serving ship. </p><h3 id="2-2-authentication--a-id----auth-json------">2.2 Authentication ;a(id “auth-json”); </h3><p>It is common(e.g. by the <code>%urb</code> mark) to set window.urb to the contents of <code>/~/auth.json</code>: </p><ul><li><p><code>ship</code> is the serving ship </p></li><li><p><code>oryx</code> is a unique CSRF token that identifies this view, bound to the session cookie </p></li><li><p><code>ixor</code> is a hash of <code>oryx</code>, used as an insecure view identifier </p></li><li><p><code>user</code> is the authenticated/generated ship name </p></li><li><p><code>auth</code> is a list of identities usable by this session </p></li></ul><h3 id="2-3-client-library-">2.3 Client library </h3><p>To this object, <code>/main/lib/urb.js</code> adds helpers: </p><ul><li><p><code>app</code> is an optional app name to send messages to by default </p></li><li><p><code>send({data,mark?=&#39;json&#39;,app?=urb.app,ship?}, cb?)</code> delivers messages </p></li><li><p><code>bind({path,app?=urb.app}, cb)</code> subscribes by path </p></li><li><p><code>drop({path,app?=urb.app}, cb?)</code> pulls the subscription </p></li><li><p><code>util</code> is an object containing methods for converting between JavaScript types and Hoon atom odors. </p></li></ul><h2 id="3--requests--a-id----kiss------">3. Requests ;a(id “kiss”); </h2><h2 id="--born-port--ud---unix-init-"><code>[%born port=@ud]</code>, unix init </h2><p>When the <code>vere</code> process is re/started, a TCP port is bound, HTTP requests on which are the scope of this document. The <code>%born</code> gift informs eyre of this occurrence, which in turn updates <a href="#bolo">its state.</a> </p><p><b>Gifts given in response:</b> none. </p><h2 id="--hiss-p-mark-q-cage---outbound-http-"><code>[%hiss p=mark q=cage]</code>, outbound http </h2><p>Userspace http request, converted by <code>%ford</code> into an actual <code>hiss</code>. </p><p><b>Gifts given in response:</b> a <a href=""><code>%sigh</code></a> </p><h3 id="3-1---this-httq---inbound-http-">3.1 <code>[%this httq]</code>, inbound http </h3><p>The primary <code>%eyre</code> request type comes from the host system, and constitutes an inbound http request. It consists of five parts: </p><p>I. <code>p=[? @if]</code>: a loobean determining whether the request is being made over https, and the client source, an IPv6 address possibly encoding an IPv4 one as <code>.0.0.0.0.0.ffff.wwxx.yyzz</code> </p><p>II. <code>q=meth</code>, an http method </p><p>III. <code>r=@t</code>, the unparsed URL </p><p>IV. <code>s=mess</code>, an associative list of header keys/values </p><p>V. <code>t=(unit octs)</code>, the request body, if any. </p><p>After <code>r</code> is parsed to a <code>purl</code>, the <code>pork</code>(relative path) determines the resource being served. The first step in handling an http request is <a href="#perk">classifying its intent</a>. </p><ul><li><p>A ford request results in a <a href="#boil"><code>%boil</code> note</a>. </p></li><li><p><code>/~/[name].js</code> is generated from <a href="#sink">session</a> or <a href="#stem">view</a> state, and <a href="#mime">served</a> as <code>%js</code>. </p></li><li><p><code>/~/am</code> generates a login page. </p></li><li><p><code>/~/as</code> is resolved further if authenticated, generates a similar login page if the claimed ship is local, and otherwise is saved to <a href="#sink">session state</a> and sends a <a href="#lon">“login” <code>%a</code> message</a> to the foreign ship. </p></li><li><p><code>/~/at</code> and <code>/~/auth.json</code> generate a new <code>oryx</code> and store it in the <a href="#sink">session state</a>. </p></li><li><p><code>/~/in</code> and <code>/~/is</code> affect <a href="#stem">view state</a>, possibly sending subscriptions or unsubscriptions to <code>%f</code> and <code>%g</code> respectively, and are generated from view state. </p></li><li><p><code>/~/on</code> is saved to the <code>bolo</code> by <code>hash</code>, and translated to a <a href="#wasp"><code>%wasp</code> note</a>. </p></li><li><p><code>/~/of</code> fails if the <code>ixor</code> is unknown, and otherwise is stored in the <code>ixor</code>, receiving a partial response and all events after its <a href="#">last-seen header</a>. If it has a <code>poll</code> parameter, the response is full, and only occurs if the body is non-empty. Otherwise the oryx is saved as a <a href="#live">live</a> request in case of cancellation. </p></li><li><p><code>/~/to</code> transforms into a <a href="#mess"><code>%g</code> message</a>. </p></li></ul><p><b>Gifts given in response:</b> a <a href=""><code>%thou</code></a>, or a <a href="#that"><code>%that</code></a> followed by multiple <a href=""><code>%thar</code></a>s. </p><h3 id="3-2---thud-----inbound-close-">3.2 <code>[%thud ~]</code>, inbound close </h3><p>Sent when an unresponded-to request is cancelled. The <a href="#live">live</a> effect of the request is looked up, and </p><ul><li><p><code>%exec</code> ford boil requests are cancelled with <code>[%exec ~]</code> </p></li><li><p><code>%wasp</code> ford deps requests are cancelled with <code>[%wasp |]</code> </p></li><li><p><code>%poll</code> session polls <code>%rest</code> the session heartbeat timeout </p></li></ul><h3 id="3-3---thin-p--ud---delivery-failure-">3.3 <code>[%thin p=@ud]</code>, delivery failure </h3><p>Sent when a partial <a href="#that">response</a> or <a href="#thar">body</a> fails to arrive. Its <code>duct</code> is the same as that of the original request. This is handled by <a href="#wait">waiting</a> for the client to reconnect, and if this not occur, unwinding all subscription state. </p><p><b>Gifts given in response:</b> None. </p><h3 id="3-4---wart-sock--path------inbound-message-">3.4 <code></code>[%wart sock [path *]]<code></code>, inbound message </h3><p>Sometimes, messages are received from other ships. They are expected to take the from of a <a href=""><code>gram</code></a>. </p><p><b>Gifts given in response:</b> <a href="#ack"><code>%nice</code> or <code>%mean</code></a>. </p><h4 id="3-4-1-gram--a-id----gram------">3.4.1 <code>gram</code> &lt;a id=“gram”/&gt; </h4><p>There are three messages of note, all concerning authentication &lt;a id=“foreign”/&gt; </p><ul><li><p><code>[/lon ses]</code> &lt;a id=“lon”/&gt; is a login request, which contains the session wishing to authenticate. </p></li><li><p>if the session is already authorized, a reply of <code>[/aut ses]</code> from (%eyre on) a foreign ship prescribes that the session is henceforth allowed to act on its behalf. All waiting <code>/~/as</code> are resolved as successful. </p></li><li><p>otherwise, <code>[/hat ses hart]</code> contains the ship&#39;s preferred hostname. This can then be used to redirect the client. All waiting <code>/~/as</code> are given <code>307 Redirect</code>s to <code>/~/am</code> on the provided host. </p></li></ul><p><b>Gifts given in response:</b> nice? </p><h2 id="4--responses--a-id----gift------">4. Responses ;a(id “gift”); </h2><h3 id="4-1---nice-------mean-ares---network-acknowledgement--a-id----ack------">4.1 <code>[%nice ~]</code>, <code>[%mean ares]</code>, network acknowledgement ;a(id “ack”); </h3><p>A <code>%nice</code> is given upon receiving an <a href="#gram">ames message</a>, indicating succesful receipt. <code>%mean</code> is currently unused directly, but reserved for error conditions. </p><h2 id="--sigh-p-cage---inbound-http-response-"><code>[%sigh p=cage]</code>, inbound http response </h2><p>An HTTP response gets converted to the requested mark, or <code>%tang</code> in case of error. </p><h3 id="4-2---thou-httr---full-http-response-">4.2 <code>[%thou httr]</code>, full HTTP response </h3><p>Most requests are served with one coherent response, consisting of </p><ul><li><p><code>p=@ud</code>, an HTTP status code </p></li><li><p><code>q=mess</code>, response headers </p></li><li><p><code>r=(unit octs)</code>, an optional body </p></li></ul><h3 id="4-3---that-httr---partial-http-response--a-id----that------">4.3 <code>[%that httr]</code>, partial HTTP response ;a(id “that”); </h3><p><a href="#of-ixor">EventStream responses</a> consist of multiple sequential chunks. Treated as <code>%thou</code>, except the request is kept open. </p><h3 id="4-4---thar--unit-octs----partial-http-body--a-id----thar------">4.4 <code>[%thar (unit octs)]</code>, partial HTTP body ;a(id “thar”); </h3><p>Complementing <code>%that</code>, <code>%thar</code> is a body chunk, containing an event. An empty <code>%thar</code> signals for the connection to be closed. </p><p>Body chunks, besides <code>[1 &#39;\0a&#39;]</code>(a heartbeat newline), are encoded from <code>even</code> events. The stem becomes the <a href="#eventsource"><code>event</code> field</a>, and the content, <code>data</code> lines. </p><h4 id="4-4-1-even--event-types--a-id----even------">4.4.1 <code>even</code>, event types ;a(id “even”); </h4><p>There are three events that a <a href="#subs">client subscription</a> will be given. </p><ul><li><p><code>[%news hash]</code>;a(id “even-news”); is a <code>%f</code> update, and contains the relevant dependency token. </p></li><li><p><code>[%rush [term path] wain]</code> ;a(id “even-rush”); is sourced subscription data. </p></li><li><p><code>[%mean [term path] ares]</code> is a sourced subscription error. </p></li></ul><h2 id="5--vane-requests--a-id----note------">5. Vane requests ;a(id “note”); </h2><h3 id="5-1---a--wont-sock--path---gram---outbound-message-">5.1 <code></code>[%a <code>%wont</code> sock <code>[path *]</code>gram]<code></code>, outbound message </h3><p>The <code>%a</code> interface provides conveyance of <a href="#gram">messages</a> over UDP. </p><p>Signs a <code>%woot</code> upon message arrival. </p><h3 id="5-2---b----wait--rest--time---timeout-set-unset--a-id----wait------">5.2 <code>[%b ?(%wait %rest) time]</code>, timeout set/unset ;a(id “wait”); </h3><p>All open <a href="#of-ixor">subscriptions</a> require a “heartbeat” newline every <code>~s30</code>. When this fails to arrive, a complementary timer is set for <code>~m1</code>, after which the client is considered to have departed. The <code>%b</code> timer interface is used to schedule the next such event, or cancel past scheduled ones when a connection closes. </p><p>Signs a <code>%wake</code> upon timer activation. </p><h3 id="5-3---f--wasp--uvi---dependency-listen--a-id----wasp------">5.3 <code>[%f %wasp @uvI]</code>, dependency listen ;a(id “wasp”); </h3><p>Knowledge of filesystem changes, requested by <code>/~/on</code> and <code>/~/in</code>, is requested the <code>%wasp</code> note. It contains the hash token which identifies a set of dependencies to query. Saved as a (live<a href="#live">live</a>#live] request in case of cancellation when caused by <code>/~/on</code>. </p><p>Signs a <code>%writ</code> upon change. </p><h3 id="5-4---f--exec--unit-silk----functional-transformations-">5.4 <code>[%f %exec (unit silk)]</code>, functional transformations </h3><p>The <code>%f</code> interface converts nouns from one form to another. An empty unit represents cancellation. </p><p>Signs a <code>%made</code> containing the computation result. </p><p>The <code>silk</code>s used are as follows: </p><h3 id="--cast--mime--boil-mark-beam---web-span------file-load-"><code>[%cast %mime %boil mark beam [%web span ~]]</code>, file load </h3><p>The simplest functional request is the construction of a page. Saved as a <a href="#live">live</a> request in case of cancellation. </p><ul><li><p>The <code>mark</code> is the request extension, defaulting to <code>%html</code>. </p></li><li><p>A <code>beam</code>(path in <code>%clay</code>) is decoded from the request path. </p></li><li><p>A <code>/web/&lt;nyp ced quy&gt;</code> virtual path is appended, span-encoding method, auth, and query string. </p></li></ul><h3 id="--cast-mark--done---cage---convert--a-id----done------"><code>[%cast mark %done ~ cage]</code>, convert ;a(id “done”); </h3><p>This is used when communicating with apps, in both directions. </p><ul><li><p>Client messages are encoded as JSON objects, but can contain many different marks. Ones sent to non-<code>json.json</code> endpoints are <code>%cast</code> to he relevant mark, with a <code>cage</code> of <code>[%json p:!&gt;(*json) jon]</code>, prior to being sent onwards to applications with <code>[%g %mess]</code>. </p></li><li><p>Subscription responses also come in arbitrary marks, but are required to be sent as whichever mark an endpoint is subscribed to. They get <code>%cast</code> prior to being sent back as a <code>%that</code> EventSource segment. </p></li></ul><h3 id="5-5--g--app-actions-">5.5 <code>%g</code>, app actions </h3><p>The end goal of many a userspace <code>hymn.hook</code> is to provide UI for a <code>%gall</code> app. To accommodate this, various functionality needs to be interfaced with. </p><h3 id="--mess-hapt-ship-cage---app-message--a-id----mess------"><code>[%mess hapt ship cage]</code>, app message ;a(id “mess”); </h3><p>After a <code>/~/to</code> POST has been received, and possibly converted to the correct mark, it is sent to <code>%g</code> for processing. The <code>hapt</code> is the destination, the <code>ship</code> is the source, the <code>cage</code> is the marked message data. </p><p>Signs a <code>%nice</code> or <code>%mean</code>, in userspace or upon crashing. </p><h3 id="--show-hapt-ship-path---app-subscription--a-id----show------"><code>[%show hapt ship path]</code>, app subscription ;a(id “show”); </h3><p>An <code>/~/is</code> PUT, if not already registered, results in a new subscription. A request for such contains the destination <code>hapt</code>, requesting <code>ship</code>, and app-internal <code>path</code>. </p><p>Signs a <code>%nice</code> on init, <code>%rush</code> on data, and a <code>%mean</code> in subscription termination. </p><h3 id="--took-hapt-ship----rush-confirmation-"><code>[%took hapt ship]</code>, <code>%rush</code> confirmation </h3><p>A <code>%took</code> must be sent to acknowledge the receipt of subscription data, which in this case occurs automatically. </p><p>Causes no signs. </p><h3 id="--nuke-hapt----ship--ship-path-----subscription-cancel-"><code>[%nuke hapt $|(ship [ship path])]</code>, subscription cancel </h3><p>An <code>/~/is</code> DELETE is used to remove a subscription, and is converted straightforwardly to a <code>%nuke</code>. Additionally, when a client disconnects, all of its subscriptions are <code>%nuke</code>d to reflect their expiration. </p><p>Signs an empty <code>%mean</code> for each open subscription that is closed. </p><h2 id="6--in-flight-metadata--a-id----whir------">6. In-flight metadata ;a(id “whir”); </h2><p>Various state can be associated with requests, but not necessarily be returned in responses to them. </p><h3 id="6-1----dropthrough--a-id----wire-drop------">6.1 <code>~</code>, dropthrough ;a(id “wire-drop”); </h3><p>If the response should be sent statelessly further up the duct, the <code>wire</code> is empty. This is used in <code>%f</code> pure functional page generation. </p><h3 id="6-2-----y--n--------stability--a-id----wire-live------">6.2 <code>[?(%y %n) ...]</code>, stability ;a(id “wire-live”); </h3><p>The first element of a <a href="#wait"><code>%b</code> timer</a> path distinguishes between live(%y) and dying(%n) channels. </p><h3 id="6-3--of--ixor---view-">6.3 <code>/of/[ixor]</code>, view </h3><p>Designates which stream to act upon. Present on <code>%b</code> timer cards. </p><h3 id="6-4--on--deps--">6.4 <code>/on/&lt;deps&gt;</code> </h3><p>Present on <code>%f</code> dependency news. Looked up in <a href="#bolo">the state</a> to see if any response is necessary. </p><h3 id="6-5--to--hasp---ship---app--a-id----wire-to------">6.5 <code>/to/&lt;hasp&gt;/&lt;ship&gt;</code>, app ;a(id “wire-to”); </h3><p>Present on <code>%f</code> translations of message marks </p><h3 id="6-6--is--ixor---hasp-path---subscription--a-id----wire-is------">6.6 <code>/is/[ixor]/{hasp path}</code>, subscription ;a(id “wire-is”); </h3><p>Subscription requests. Present on <code>%g</code> subscription requests, and <code>%f</code> translations of <a href="#show"><code>%rush</code> subscription data</a>. </p><h2 id="7--vane-responses--a-id----sign------">7. Vane responses ;a(id “sign”); </h2><p>The goal of requests is to cause some manner of result. Specifically, </p><h3 id="7-1---a--woot-ship-coop---acknowledgement-">7.1 <code>[%a %woot ship coop]</code>, acknowledgement </h3><p>A <a href="#mess">message</a> which has been acknowledged remotely. </p><h3 id="7-2---b--wake-----timer-">7.2 <code>[%b %wake ~]</code>, timer </h3><p>Timer activate. If this is a <code>%y</code> <a href="#wire-live">timer</a>, send a newline to each <code>/~/of/[oryx]</code>; if <code>%n</code> and the <code>oryx</code> still has no listeners, wipe its state/subscriptions. </p><h3 id="7-3---f--news-----dependency-update-">7.3 <code>[%f %news ~]</code>, dependency update </h3><p>This message signifies a <code>hash</code> has changed, and listeners to it should be updated. Results in <a href="#even-news"><code>%news</code> events</a> to concerned streams, and <a href="#thou">full responses</a> to relevant long-polls. </p><h3 id="7-4---f--made--each-bead--list-tank-----compute-result-">7.4 <code>[%f %made (each bead (list tank))]</code>, compute result </h3><p>Further action depends on the <a href="#whir"><code>wire</code></a>. It can: </p><ul><li><p>Be empty, designating direct request data, which is <a href="#mime">served</a> back up the <code>duct</code>. </p></li><li><p>Contain <a href="#wire-to">app and requester identities</a>, which designates an app message has been converted to the correct <code>mark</code>, and can now be <a href="#mess">sent to the app</a> with an empty <code>wire</code>. </p></li><li><p>Contain an <code>oryx</code>, app, and <code>path</code>, designating subscription data. If the subscription is active in the relevant <code>stem</code>, it is acknowledged with a <code>%took</code> and given as a <a href="#even-rush"><code>%rush</code> event</a> to all listeners. Otherwise, the subscription is <code>%nuke</code>d. </p></li></ul><h3 id="7-5--g--applications-">7.5 <code>%g</code>, applications </h3><p>The <code>%g</code> interface sends several responses. </p><h3 id="--nice----and---mean-ares---acknowledgment-"><code>[%nice ~]</code> and <code>[%mean ares]</code>, acknowledgment </h3><p>These are given as a response to <code>%mess</code>, with an empty wire, and <code>%show</code>s, with a <a href="#wire-is">subscription wire</a>. The former is <a href="#mime">served</a> back to the requester(i.e. the remaining duct), and the latter returned to the client. </p><h4 id="7-5---rush-cage---subscription-data-">7.5 <code>[%rush cage]</code>, subscription data </h4><p>A <code>%rush</code> arrives on a <a href="#wire-is">subscription wire</a>, and is then sent <a href="#done">for conversion</a> to the correct mark. An unexpected <code>%rush</code> is <code>%nuke</code>d. </p><h2 id="8--server-state--a-id----bolo------">8. Server state ;a(id “bolo”); </h2><p>There is a quantity of data that persists between events. </p><h3 id="8-1-global-">8.1 Global </h3><ul><li><p><code>path</code> ;a(id “prefix”); the default path which is prepended to relative plain requests. Initialized to <code>/&lt;our&gt;</code>, the serving ship; this interprets the first element of requests as a desk, and injects a <code>case</code> of <code>0</code>. </p></li><li><p><code>(jar ship hart)</code> remembered hostnames in order of preference, made accessible through <code>.^</code> </p><ol><li><p>The default values(for self) are <code>http://&lt;ship&gt;.urbit.org:80</code> if not on a fake network, followed by <code>https://0.0.0.0:[port]</code>. </p></li></ol></li><li><p><code>(jug deps (each duct oryx))</code>, <code>/~/on</code> and <code>/~/in</code> endpoints listening to <code>%c</code> updates. </p></li><li><p><code>(map duct live)</code>, inbound request state </p></li><li><p><code>(map ixor oryx)</code>, open <code>/~/of</code> streams. </p></li><li><p><code>(map oryx stem)</code>, open view state. </p></li><li><p><code>(map hole sink)</code>, session state. </p></li><li><p><code>(map hole ,[ship ?])</code>, foreign session names, along with their origin ships and whether they are authorized to act on our behalf. </p></li></ul><h3 id="8-2-live--per-request-state--a-id----live------">8.2 <code>live</code>, per-request state ;a(id “live”); </h3><p>To honor request cancellations, each unserved request must track which effect it is causing. </p><ol><li><p><code>[%exec whir]</code> if it is a ford data request </p></li><li><p><code>[%wasp (list @uvH)]</code> if it is a ford dependency poll </p></li><li><p><code>[%xeno ship]</code> if this is a proxied request </p></li><li><p><code>[%poll ixor]</code> if this is a session long-poll </p></li></ol><h3 id="8-3-sink--per-session-state--a-id----sink------">8.3 <code>sink</code>, per-session state ;a(id “sink”); </h3><p>Each <code>hole</code> has associated authentication state. </p><ul><li><p><code>priv</code>, a random secret that verifies the session, stored in cookie. </p></li><li><p><code>[ship (set ship)]</code>, the <code>ship</code> a session is acting as and any others it has been authorized with. </p></li><li><p><code>(jug ship ,[path duct])</code>, authentication <code>/~/as</code> requests waiting on foreign ships. </p></li><li><p><code>(set oryx)</code>, views associated with this session. Dual of <code>hole</code> in <code>stem</code>. </p></li></ul><h3 id="8-4-stem--per-view-state--a-id----stem------">8.4 <code>stem</code>, per-view state ;a(id “stem”); </h3><p>Each <code>oryx</code> has active subscription state. </p><ul><li><p><code>hole</code>, session in which this view resides. Dual of <code>(set oryx)</code> in <code>sink</code>. </p></li><li><p><code>ixor</code> ;a(id “ixor”); , a cached hash of the <code>oryx</code> that is used as a subscription id, by the <code>/~/of</code> EventStream. </p></li><li><p><code>[,@u (map ,@u even)]</code>, queued <a href="#even">events</a>. Has a maximum size. </p></li><li><p><code>(unit ,[duct @u ?])</code>, http connection, its last received event, and whether it is a long-poll request. </p></li><li><p><code>(set deps)</code>, subscribed <code>/~/in</code> points. Mirrored in <code>bolo</code>. </p></li><li><p><code>(map ,[hasp path] mark)</code>, subscribed <code>/~/is</code> points </p></li><li><p><code>(que duct)</code>, where any <code>%nice</code>/`%mean </p></li></ul><h2 id="appendix-a--glossary-">Appendix A: Glossary </h2><ul><li><p>An <code>oryx</code> is a CSRF token used for <a href="#auth">authenticated requests</a> </p></li><li><p><code>mean.json</code> ;a(id “mean-json”); is a rendering of hoon <code>ares</code>: an error message formatted as <code>{fail:&#39;type&#39;,mess:&quot;Error message&quot;}</code> </p></li><li><p><code>urb.js</code> ;a(id “urb-js”); is the standard client-side implementation of the <code>%eyre</code> protocols, normally found in <code>/=main=/lib</code> </p></li><li><p>The act of “serving” ;a(id “mime”); , refers to the wrapping of a <code>%mime</code> cage in an HTTP <code>200 Success</code> response, and errors or other marks being <a href="#done">sent to ford</a> for conversion. Inside a <code>sign</code>, this conversion occurs along the same <a href="#wire"><code>wire</code></a>; otherwise, the <code>wire</code> is <a href="#wire-drop">empty</a>. </p></li></ul><h2 id="appendix-b--eventsource--a-id----eventsource------">Appendix B: EventSource ;a(id “eventsource”); </h2><p>UNIMPLEMENTED </p><p>For more information, see &lt;http://dev.w3.org/html5/eventsource/&gt; </p><p>An EventSource is a stream of events, encoded in a conceptually infinite <code>GET</code> request. Each event is formatted as </p><pre> http
5− id: {number}
6− event: {type}
7− data: {contents}
8− data: {more-contents}
9−</pre><p>Data lines are joined by ASCII <code>10</code> newline characters; multiple newlines signify separate events. The <code>id</code> is used in a <code>Last-Event-ID</code> HTTP request header upon reconnection. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/filesystem/index.htmldeleted−40
@@ -1,40 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="introduction-to-the-filesystem-">Introduction to the Filesystem </h1><p>Urbit has its own revision-controlled filesystem, Clay. Clay is a typed, global, referentially transparent namespace. An easy way to think about it is like typed <code>git</code> with continuous sync. </p><p>The most common way to use Clay is to mount a Clay node in a Unix directory. The Urbit process will watch this directory and automatically record edits as changes, Dropbox style. The mounted directory is always at the root of your pier directory. </p><h2 id="quickstart-">Quickstart </h2><p>This quick-start guide will walk you through some common commands. Follow along using your Dojo. When you get a <code>&gt;=</code> message after entering a command, the means that the command was successful. </p><p>When developing it&#39;s a good idea to use a separate desk. Create a <code>%sandbox</code> desk based on the <code>%home</code> desk: </p><pre>|merge %sandbox ~your-urbit %home
2−</pre><p>Running <code>our</code> produces your ship-name, meaning that you can run the following command instead of typing out the entire thing. Useful for comets, due to their very long names. </p><pre>|merge %sandbox our %home
3−</pre><p>Most of the time we want to use Clay from Unix. Mount the entire contents of your <code>sandbox</code> desk to Unix: </p><pre>~your-urbit:dojo&gt; |mount /=sandbox=
4−</pre><p>To explore the filesystem from inside Urbit <code>+ls</code> and <code>+cat</code> are useful. <code>+ls</code> displays files in the current directory, and <code>+cat</code> displays the contents of a file. </p><p>We can use <code>%</code> to mean “current directory.” The result of the command below is just like using <code>ls</code> in a Unix terminal. </p><pre>~your-urbit:dojo&gt; +ls %
5−</pre><p>Notice how <code>+cat %</code> does the same thing. That&#39;s because everything in Clay, including directories, is a file. </p><p>Let&#39;s explore the <code>/web</code> directory of the <code>%sandbox</code> desk. </p><pre>~your-urbit:dojo&gt; +ls /=sandbox=/web
6−</pre><p>Let&#39;s see the contents of <code>/=sandbox=/web/md</code>: </p><pre>~your-urbit:dojo&gt; +cat /=sandbox=/web/md
7−</pre><p>Now let&#39;s navigate to that folder using <code>=dir</code>, which is a like <code>cd</code> in Unix. </p><pre>~your-urbit:dojo&gt; =dir /=sandbox=/web/md
8−</pre><p>Youl&#39;ll notice that your prompt is now <code>~your-urbit:dojo/sandbox/web/md&gt;</code>. To change back to our home directory, we use <code>=dir</code> without any path. </p><pre>~your-urbit:dojo/sandbox/web/md&gt; =dir
9−</pre><p>Sync from your friend <code>~some-ship</code>&#39;s <code>%experiment</code> desk to your <code>%sandbox</code> desk: </p><pre>|sync %sandbox ~some-ship %experiment
10−</pre><p>If and when your sync is successful, you will receive a message: </p><pre>activated sync from %experiment on ~some-ship to %sandbox
11−</pre><p>The ship that you sync from will get their own message indicating that you&#39;re both connected as peers: </p><pre>; ~your-urbit is your neighbor.
12−</pre><hr /><h2 id="manual-">Manual </h2><h3 id="paths-">Paths </h3><p>A path in Clay is a list of URL-safe text, restricted to the characters <code>[a z]</code>,<code>[0 9]</code>, <code>.</code>, <code>-</code>, <code>_</code>, and <code>~</code>. Formally this is a <code>(list knot)</code>, meaning that each segment, delineated by <code>/</code>, is of the <code>knot</code> ASCII-text type. In other words, paths are expressed as <code>/foo/bar/baz</code>. File extensions are separated from file names with <code>/</code>, not <code>.</code>. Extensions are syntactically identical to subdirectories, except that they must terminate the path. </p><p>Paths begin with a piece of data called a <code>beak</code>. A beak is formally a <code>(p=ship q=desk r=case)</code>; it has three components, and might look like <code>/~dozbud-namsep/home/11</code>. </p><p>The first <code>beak</code> component is <code>ship</code>, which is, as you might guess, the name of an Urbit ship. The second component is <code>desk</code>, which is a workspace meant to contain other directories; the default desk is <code>%home</code>. The third component is <code>case</code>, which represents version information in various ways: date and time; a version sequence, which is a value incremented by one whenever a file on the given <code>desk</code> is modified; or an arbitrary plaintext label. </p><p>You can find what your <code>beak</code> is at any given moment by typing <code>%</code> in the Dojo and looking at the first three results. </p><p>We use <code>beak</code>s because, unlike the current internet, the Urbit network uses a global namespace. That means that a file named <code>example.hoon</code> in the <code>/gen</code> directory on the <code>%home</code> desk of your ship <code>~lodleb-ritrul</code> would have a universal address to anyone else on the network: <code>~lodleb-ritrul/home/186/gen/example.hoon</code>. That, of course, doesn&#39;t mean that everyone on the network has privileges to access that path. </p><p>The structure that combines a <code>beak</code> with further path information is called a <code>beam</code>. </p><h5 id="relative-paths-">Relative paths </h5><p>The <code>%</code> command, which we gestured at in the above section, represents the <b>relative path</b>, which is the path where you are currently working. If your working directory is just your home desk, indicated by the prompt <code>~your-planet:dojo&gt;</code>, then running the command below will print your working directory&#39;s <code>beam</code> information: your <code>beak</code>, and a <code>~</code> that represents the empty list since no path is present. </p><pre>~your-urbit:dojo&gt; %
13−</pre><p><code>%</code>s can be stacked to indicate one level further up in the hierarchy for each additional <code>%</code>. Try the following command: </p><pre>~your-planet:dojo&gt; %%%
14−</pre><p>You&#39;ll probably notice that it only has your ship name and the empty list. The two additional <code>%</code>s abandoned the <code>case</code> and the <code>desk</code> information by moving up twice the hierarchy. </p><p>There are no local relative paths. <code>/foo/bar</code> must be written as <code>%/foo/bar</code>. </p><h5 id="substitution-">Substitution </h5><p>You don&#39;t need to write out the explicit path every time you want to reference somewhere outside of your working directory. You can substitute <code>=</code> for the segments of a path. </p><p>Recall that a full address in the the Urbit namespace is a <code>beam</code>: the <code>/ship/desk/case/path</code>. If you&#39;ve switched to another desk before, you&#39;re already familiar with substitution syntax: </p><pre>~your-urbit:dojo&gt; =dir /=sandbox=
15−</pre><p>The above command substitutes uses substitution to use your current <code>ship</code> and <code>case</code>; only the <code>desk</code> argument, which is located between the other two, is given something new. Without substitution, you would need to write: </p><pre>~your-urbit:dojo&gt; =dir /~your-urbit/home/85
16−</pre><p>Substitutions work the same way in <code>beak</code>s (the <code>ship/desk/case</code> part) and paths. For example, if you are in the <code>/gen</code> directory, you can reference a file in the <code>/app</code> directory like below. (<code>+cat</code> displays the contents of a file). </p><pre>~your-urbit:dojo/home/gen&gt; +cat /===/app/curl/hoon
17−</pre><p>Note what was substituted out, and note that we don&#39;t need to separate <code>=</code> with <code>/</code>. </p><p>If we changed our working directory to something called <code>/gen/gmail</code>, we could access a file called </p><pre>~fasdul-balsev-lodleb-ritrul:dojo/home/gen/gmail&gt; +cat /===/app/=/split/hoon
18−</pre><p>Because both paths share a directory named <code>/gmail</code> at the same position in the address hierarchy -- which, if you recall, is just a <code>list</code> -- the above command works! </p><p>We can do the same thing between desks. If <code>%sandbox</code> has been merged with <code>%home</code>, the following command will produce the same results as the above command. </p><pre>~your-urbit:dojo/home/gen/gmail&gt; +cat /=sandbox=/app/=/split/hoon
19−</pre><p>Most commonly this is used to avoid having to know the current revision number in the <code>dojo</code>: <code>~lodleb-ritrul/home/~2018.10.2..00.35.44..d7e8/gen/example.hoon</code> </p><h5 id="changing-directories-">Changing directories </h5><p>Change the working directory with <code>=dir</code>. It&#39;s our equivalent of the Unix <code>cd</code>. </p><p>For example, the syntax to navigate to <code>/home/gen/ask</code> is: </p><pre>~your-urbit:dojo&gt; =dir /=gen=/ask
20−</pre><p>This command will turn your prompt into something like this: </p><pre>~your-urbit:dojo/gen/ask&gt;
21−</pre><p>Using <code>=dir</code> without anything else uses the null path, which returns you to your home desk. </p><pre>~your-urbit:dojo&gt; =dir
22−</pre><p>To go up levels in the path hierarchy, recall the relative path expression <code>%</code>. Stacking them represents another level higher in the hierarchy than the current working directory for each <code>%</code> beyond the initial. The command below brings you one level up: </p><pre>~your-urbit:dojo/gen&gt; =dir %%
23−</pre><h3 id="revision-control-">Revision-control </h3><h5 id="mount-">Mount </h5><p>Syntax: <code>|mount /clay/path [Unix-name]</code> </p><p>Mount the <code>clay-path</code> at the Unix mount point <code>Unix-name</code>. </p><p><b>Examples:</b> </p><pre>|mount %/web
24−</pre><p>Mounts <code>%/web</code> to <code>/web</code> inside your pier directory. </p><pre>|mount %/gen generators
25−</pre><p>Mounts <code>%/gen</code> to <code>/generators</code> inside your pier directory. </p><h5 id="unmount-">Unmount </h5><pre>|unmount [clay-path || Unix-name]
26−</pre><p>Unmount the path or name from Unix. </p><p><b>Examples:</b> </p><pre>|unmount %/web
27−</pre><p>Unmounts the path <code>%/web</code> from whatever name it was mounted as. </p><pre>|unmount %generators
28−</pre><p>Unmounts the Unix path <code>/generators</code>. </p><pre>|merge desk beak[, =gem strategy]
29−</pre><p>Merges a <code>beak</code> into a <code>desk</code> using an optional merge <code>strategy</code>. </p><p>A <code>beak</code> is a ship-desk-case triple, encoded as a path(<code>/~dozbud/home/2</code>) </p><p><b>Examples:</b> </p><pre>|merge %home-work /=home=, =gem %fine
30−</pre><p>Merge <code>/=home=</code> into <code>%home-work</code> using merge strategy <code>%fine</code>. </p><pre>|merge %examples ~wacbex-ribmex %examples
31−</pre><p>Merge the <code>%examples</code> desk from <code>~waxbex-ribmex</code> </p><pre>|sync desk plot [plot-desk]
32−</pre><p>Subscribe to continuous updates from remote <code>plot</code> on local <code>desk</code>. <code>plot-desk</code> can specify the remote <code>desk</code> name. When omitted it is defaulted to being the same as <code>desk</code>. Non-comet urbits have <code>|sync %home ~parent %kids</code> automatically set up (where <code>~parent</code> is the planet that issued a moon, the star that issued a planet, or the galaxy that issued a star). </p><p><b>Examples:</b> </p><pre>|sync %home-local ~dozbud %home
33−
34−|sync %home ~doznec
35−</pre><pre>|unsync desk plot [plot-desk]
36−</pre><p>Unsubscribe from updates from remote <code>plot</code> on local <code>desk</code> with optional <code>plot-desk</code>. Arguments must match original <code>|sync</code> command. </p><p>Example: </p><pre>|unsync %home-local ~dozbud %home
37−</pre><pre>|label desk name`
38−</pre><p>Label the current version of <code>desk</code> <code>name</code>. </p><p>Example: </p><pre>|label %home release
39−</pre><h3 id="merge-strategies-">Merge strategies </h3><p><code>%init</code> - Used if it&#39;s the first commit to a desk. Also can be used to “reinitialize” a desk -- revision numbers keep going up, but the new revision isn&#39;t necessarily a descendent of the previously numbered version, allowing merges to be rerun. </p><p><code>%this</code> - Keep what&#39;s in Bob&#39;s desk, but join the ancestry. </p><p><code>%that</code> - take what&#39;s in Alice&#39;s desk, but join the ancestry. This is the reverse of <code>%this</code>. This is different from <code>%init</code> because the new commit has both sides in its ancestry. </p><p><code>%fine</code> - “fast-forward” merge. This succeeds if and only if one head is in the ancestry of the other. </p><p><code>%meet</code>, <code>%mate</code>, and <code>%meld</code> - find the most recent common ancestor to use as our merge base. </p><p>A <code>%meet</code> merge only succeeds if the changes from the merge base to Alice&#39;s head (hereafter, “Alice&#39;s changes”) are in different files than Bob&#39;s changes. In this case, the parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files. </p><p>A <code>%mate</code> merge attempts to merge changes to the same file when both Alice and Bob change it. If the merge is clean, we use it; otherwise, we fail. A merge between different types of changes -- for example, deleting a file vs changing it -- is always a conflict. If we succeed, the parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files plus the merged files. </p><p>A <code>%meld</code> merge will succeed even if there are conflicts. If there are conflicts in a file, then we use the merge base&#39;s version of that file, and we produce a set of files with conflicts. The parents are both Alice&#39;s and Bob&#39;s heads, and the data is the merge base plus Alice&#39;s changed files plus Bob&#39;s changed files plus the successfully merged files plus the merge base&#39;s version of the conflicting files. </p><p><code>%auto</code> - meta-strategy. Check to see if Bob&#39;s desk exists, and if it doesn&#39;t we use an <code>%init</code> merge. Otherwise, we progressively try <code>%fine</code>, <code>%meet</code>, and <code>%mate</code> until one succeeds. If none succeed, we merge Bob&#39;s desk into a scratch desk. Then, we merge Alice&#39;s desk into the scratch desk with the <code>%meld</code> option to force the merge. Finally, we annotate any conflicts, if we know how. </p><h3 id="manipulation-">Manipulation </h3><h5 id="-cat-">+cat </h5><p>Syntax: <code>+cat path [path ...]</code> </p><p>Similar to Unix <code>cat</code>. <code>+cat</code> takes one or more <code>path</code>s, and prints their contents. If that <code>path</code> is a file, the contents of the file is printed. If the <code>path</code> terminates in a directory, the list of names at that path is produced. </p><h5 id="-ls-">+ls </h5><p>Syntax: <code>+ls path</code> </p><p>Similar to Unix <code>ls</code>. <code>+ls</code> takes a single <code>path</code>. </p><p>Produces a list of names at the <code>path</code>. </p><pre>~your-urbit:dojo&gt; +cat %/our/home/gen/curl/hoon
40−</pre><h5 id="-rm-">|rm </h5><p>Syntax: <code>|rm path</code> </p><p>Remove the data at <code>path</code>. <code>path</code> must be a path to actual node, not a &#39;directory&#39; </p><h5 id="-cp-">|cp </h5><p>Syntax: <code>|cp to from</code> </p><p>Copy the file at <code>from</code> into the path <code>to</code>. </p><h5 id="-mv-">|mv </h5><p>Syntax: <code>|mv to from</code> </p><p>Move the file at <code>from</code> into the path <code>to</code>. </p><p>In Clay, <code>|mv</code> is just a shorthand for <code>|cp</code> then <code>|rm</code>. The <code>|rm</code> doesn&#39;t happen unless the <code>|cp</code> succeeds. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/ford/index.htmldeleted−120
@@ -1,120 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="ford-">Ford </h1><p>Our typed and marked computation engine. </p><p>A variety of different services are provided by <code>%ford</code>, but they mostly involve compiling hook files, slapping/slamming code with marked data, and converting data between marks, including validating data to a mark. Throughout every computation, <code>%ford</code> keeps track of which resources are dependencies so that the client may be aware when one or more dependencies are updated. </p><p><code>%ford</code> neither accepts unix events nor produces effects. It exists entirely for the benefit of applications and other vanes, in particular <code>%gall</code>. <code>%eyre</code> exposes the functional publishing aspects of <code>%ford</code> while <code>%gall</code> uses <code>%ford</code> to control the execution of applications. <code>%clay</code> is intended to use <code>%ford</code> to managed marked data, but this is not yet reality. </p><h2 id="cards-">Cards </h2><p><code>%ford</code> accepts just one card, <code>%exec</code>. This is misleading, however, since there are fourteen different <code>silk</code>s that may be used with it. In every case, the expected response to a <code>%exec</code> card is a <code>%made</code> gift with either an error or the produced result along with its set of dependencies. </p><p>Silks may autocons, so that the product of a cell of silks is a cell of the product of the two silks. </p><h3 id="-bake-"><code>%bake</code> </h3><p>Tries to functionally produce the file at a given beam with the given mark and heel. It fails if there is no way to translate at this level. </p><h3 id="-boil-"><code>%boil</code> </h3><p>Functionally produces the file at a given beam with the given mark and heel. If there is no way to translate at this beam, we pop levels off the stack and attempt to bake there until we find a level we can bake. This should almost always be called instead of <code>%bake</code>. </p><h3 id="-call-"><code>%call</code> </h3><p>Slams the result of one silk against the result of another. </p><h3 id="-cast-"><code>%cast</code> </h3><p>Translates the given silk to the given mark, if possible. This is one of the critical and fundamental operations of ford. </p><h3 id="-diff-"><code>%diff</code> </h3><p>Diffs the two given silks (which must be of the same mark), producing a cage of the mark specified in <code>++mark</code> in <code>++grad</code> for the mark of the two silks. </p><h3 id="-done-"><code>%done</code> </h3><p>Produces exactly its input. This is rarely used on its own, but many silks are recursively defined in terms of other silks, so we often need a silk that simply produces its input. A monadic return, if you will. </p><h3 id="-dude-"><code>%dude</code> </h3><p>Computes the given silk with the given tank as part of the stack trace if there is an error. </p><h3 id="-dune-"><code>%dune</code> </h3><p>Produces an error if the cage is empty. Otherwise, it produces the value in the unit. </p><h3 id="-mute-"><code>%mute</code> </h3><p>Takes a silk and a list of changes to make to the silk. At each wing in the list we put the value of the associated silk. </p><h3 id="-pact-"><code>%pact</code> </h3><p>Applies the second silk as a patch to the first silk. The second silk must be of the mark specified in <code>++mark</code> in <code>++grad</code> for the mark of the first silk. </p><h3 id="-plan-"><code>%plan</code> </h3><p>Performs a structured assembly directly. This is not generally directly useful because several other silks perform supersets of this functionality. We don&#39;t usually have naked hoods outside ford. </p><h3 id="-reef-"><code>%reef</code> </h3><p>Produces a core containing the entirety of Zuse and Hoon, suitable for running arbitrary code against. The mark is <code>%noun</code>. </p><h3 id="-ride-"><code>%ride</code> </h3><p>Slaps a hoon against a subject silk. The mark of the result is <code>%noun</code>. </p><h3 id="-vale-"><code>%vale</code> </h3><p>Validates untyped data from a ship against a given mark. This is an extremely useful function. </p><h2><div id="runes">Ford runes</div></h2><p>One of the most common ways to use ford is through ford&#39;s runes, all of which begin with <code>/</code> (“net”). A ford rune runs a step of a ford build and places the result in the subject. There are various kinds of build steps, some of which take other build steps as parameters. The most common pattern is to have a sequence of ford runes at the top of a hoon source file that import the results of evaluating other hoon files. This is how we “import a library” in urbit: we add the result of compiling another hoon file into the current subject, possibly renaming it by wrapping a face around it. </p><p>Another common use case is assembling and rendering markdown templates into a single HTML file, to be sent as an HTTP response in urbit&#39;s web server <code>%eyre</code>. It&#39;s important to keep in mind that <code>%ford</code> is quite flexible and generic, and is used in other parts of urbit -- such as the dojo -- that would not traditionally fall under the purview of a build system. </p><h3 id="---import-from-lib--"><code>/+</code> import from lib/ </h3><p>The <code>/+</code> rune accepts a filename as an argument. It interprets that filename as a hoon source file within the <code>lib</code> directory. This is how we import a shared library in urbit. </p><p>To run this example, put this code in your desk at <code>gen/faslus.hoon</code> and run <code>+faslus</code> in your dojo. This example is a generator. For more information on generators, see the <a href="/docs/arvo/arvo-internals/generators">generator docs</a>. </p><pre>/+ time-to-id
2−::
3−:- %say
4−|= {{now/@da * *} $~ $~}
5−:- %noun
6−(time-to-id now)
7−</pre><p>produces: <code>&quot;c.314d&quot;</code> (or something similar depending on when you run it) </p><p>You can import multiple libraries with a single <code>/+</code> rune by separating them with commas. </p><p>Replace the code in <code>gen/faslus.hoon</code> with the following: </p><pre>/+ time-to-id, hep-to-cab
8−::
9−:- %say
10−|= {{now/@da * *} $~ $~}
11−:- %noun
12−=/ id (time-to-id now)
13−=/ str &quot;my-id-is-{id}&quot;
14−(hep-to-cab (crip str))
15−</pre><p>This should print something like <code>my_id_is_c.3588</code>. </p><p>Another feature of the <code>/+</code> and <code>/-</code> runes is the ability to specify the ship and case from which to load the library. </p><p>Example: </p><pre>/+ time-to-id, hep-to-cab/4/~zod
16−</pre><p>will load the <code>hep-to-cab</code> library from <code>~zod</code> at <code>%clay</code> revision <code>4</code>. </p><h3 id="---import-from-sur--"><code>/-</code> import from sur/ </h3><p>The <code>/-</code> rune accepts a filename as an argument. It interprets that filename as a hoon source file within the <code>sur</code> directory. The <code>sur</code> directory contains shared structures that can be used by other parts of urbit. This is somewhat similar to including a header file in C. </p><p>Example: </p><pre>/- talk
17−::
18−*serial:talk
19−</pre><p>produces: <code>0v0</code> </p><p><code>/-</code> can also take multiple files as arguments, and the ship and case of those arguments can be specified. See the <code>/+</code> docs for more details about the syntax for those features. </p><h3 id="---twig-by-hand-"><code>/~</code> twig by hand </h3><p><code>/~ &lt;twig&gt;</code> produces a “horn” that evaluates a twig and places the product in the subject. Arbitrary hoon can be in the twig. A horn is a data structure representing a <code>%ford</code> static resource. </p><p>Example: </p><pre>/~ [a=0 b=1]
20−[a b]
21−</pre><p>produces: <code>[0 1]</code> </p><p>In wide-form, <code>/~</code> always takes a tuple (which may be a degenerate tuple of one element), and produces it. </p><p>Example: </p><pre>/~[%something]
22−</pre><p>produces: <code>%something</code> </p><pre>/~[%a %b]
23−</pre><p>produces: <code>[%a %b]</code> </p><h3 id="---include-a-file-by-relative-path-"><code>//</code> include a file by relative path </h3><p><code>// &lt;rel-path&gt;</code> parses <code>rel-path</code> as a hoon twig, and then adds the resulting twig to the subject. Note that the result type of this rune is not a horn, but just a hoon twig, so its result can&#39;t be used as an argument to other runes that expect a horn. There is no wide-form for this rune. </p><p>Example: </p><pre>// %/file-to-include
24−::
25−(frobnicate:file-to-include %.n)
26−
27−:: contents of file-to-include.hoon
28−|%
29−++ frobnicate
30− |= a/? ^+ a
31− !a
32−--
33−</pre><p>produces: <code>%.y</code> </p><p><i>Note: <code>%</code> means current directory, which in a hoon file will resolve to the “directory” containing that file. Also, <code>%clay</code> doesn&#39;t have first-class directories the way unix filesystems do. Whereas in unix, a directory is a special kind of file, in <code>%clay</code> it&#39;s just a path prefix, and there is no file stored at that path.</i> </p><h3 id="---wrap-a-face-around-an-included-horn-"><code>/=</code> wrap a face around an included horn </h3><p><code>/=</code> runs a horn (usually produced by another ford rune), takes the result of that horn, and wraps a face around it. </p><p>Example: </p><pre>/= foo /~ [a=0 b=1]
34−::
35−[a.foo b.foo]
36−</pre><p>produces: <code>[0 1]</code> </p><p>In wide-form, <code>/=</code> uses <code>=</code> as a delimiter: <code>/=foo=/~[a=0 b=1]</code> </p><h3 id="---evaluate-at-path--and---mark---render-mark-at-current-path-"><code>/:</code> evaluate at path, and <code>/&lt;mark&gt;/</code> render mark at current path </h3><p><code>/:</code> takes a path and a horn, and evaluates the horn with the current path set to the supplied path. <code>/mar/</code> renders the mark &#39;mar&#39; at the current path. </p><p>Example: </p><pre>/= hoo-source /: /path/to/hoon-file /hoon/
37−::
38−`@t`hoo-source
39−</pre><p>produces the text of the hoon file at “/path/to/hoon-file/hoon”. </p><p><code>/hoon/</code> renders the current path using the <code>%hoon</code> mark, which in this case passes the contents through unchanged. In general, rendering a file with a mark will potentially run the contents through a series of conversion operations. For details on marks, see the <a href="../gall">Gall docs</a>. </p><p>Here&#39;s an example that includes a mark conversion: </p><pre>/= page /: /path/to/html/file /mime/
40−::
41−page
42−
43−:: contents of /path/to/html/file:
44−&lt;html&gt;&lt;head&gt;&lt;title&gt;My Fascinating Blog&lt;/title&gt;&lt;/head&gt;&lt;/html&gt;
45−</pre><p>produces: <code>[[%text %html ~] 60 &#39;&lt;html&gt;&lt;head&gt;&lt;title&gt;My Fascinating Blog&lt;/title&gt;&lt;/head&gt;&lt;/html&gt;&#39;]</code> </p><p>This result includes the MIME type (&#39;text/html&#39;), the content length in bytes, and the HTML itself. </p><p>In wide-form, <code>/:</code> uses <code>:</code> as a delimiter: <code>/=page=/:/path/to/html/file:/mime/</code> </p><h3 id="--mark--evaluate-as-hoon--then-pass-through-mark-"><code>/!mark/</code> evaluate as hoon, then pass through mark </h3><p>Example: </p><pre>/= mime /: /%/some-hoon-file /!mime/
46−::
47−mime
48−
49−:: contents of /%/some-hoon-file:
50−%produces-a-cord
51−</pre><p>produces: <code>[[%text %plain ~] 15 &#39;produces-a-cord&#39;]</code> </p><h3 id="---pass-through-a-series-of-marks-"><code>/&amp;</code> pass through a series of marks </h3><p><code>/&amp;</code> passes a horn through multiple marks, right-to-left. It has both a wide-form and a tall-form syntax. In wide-form, it takes a series of mark arguments followed by a horn. In tall-form, it takes a single mark followed by a horn. </p><pre>/= some-text /: /%/text-file /&amp;mime&amp;/txt/
52−::
53−some-text
54−</pre><p>produces: <code>[[%text %plain ~] p=17 q=&#39;Hi I\&#39;m some text\0a&#39;]</code> </p><p>This example shows two of the ways marks are used. The first way is what happens with the <code>/txt/</code> mark: we use it to find a file in clay with that extension, without performing any conversions. Since this file is stored with the <code>%txt</code> mark in <code>%clay</code>, its type is a <code>wain</code>: a list of cords, where each cord is a single line. Once we&#39;ve read the file, the <code>%mime</code> mark converts the <code>wain</code> to a triple that includes the MIME type (“text/plain”), the content length in bytes, and the content itself as a cord. </p><pre>/= page /&amp;html&amp;elem&amp;/~[;div.foo;]
55−::
56−page
57−</pre><p>produces: <code>&#39;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;div class=&quot;foo&quot;&gt;&lt;/div&gt;&lt;/body&gt;&lt;/html&gt;&#39;</code> </p><p>This runs the sail expression <code>;div.foo;</code> through the <code>%elem</code> mark, then through the <code>%html</code> mark. The <code>/~</code> rune produces an item of mark <code>noun</code>. The <code>%elem</code> mark converts the mark of the expression from <code>noun</code> to <code>elem</code> by checking that the type fits in <code>manx</code> (a hoon/sail type indicating an XML element). The <code>%html</code> mark recognizes the <code>%elem</code> and converts it to an HTML string with enclosing <code>&lt;html&gt;</code>, <code>&lt;head&gt;</code>, and <code>&lt;body&gt;</code> tags. </p><p>It&#39;s possible to use wide-form <code>/&amp;</code> with more than two marks, by using <code>&amp;</code> as a delimiter between marks and adding a <code>/</code> before the last mark, like: <code>/&amp;d&amp;c&amp;b&amp;/a/</code>. The last argument here can actually be any arbitrary horn, not just a mark: <code>/&amp;c&amp;b&amp;/:path:/mark/</code> </p><p>Tall-form <code>/&amp;</code> takes only two arguments: a mark and a horn. The mark does not need to be enclosed in <code>/</code>&#39;s: <code>/&amp; html /elem/</code> </p><h3 id="---short-circuiting--or--"><code>/|</code> short-circuiting &#39;or&#39; </h3><p><code>/|</code> takes a series of horns and produces the first one (left-to-right) that succeeds. If none succeed, it produces stack traces from all of its arguments. </p><p>Example: </p><pre>/= res /: /%/path/to/file
58−/|
59− /!elem/
60− /elem/
61−==
62−::
63−res
64−</pre><p>tries to parse the file at <code>/%/path/to/file</code> as a hoon expression and evaluate it (<code>/!elem/</code>), and then if that fails, tries to convert the file to an HTML element directly (<code>/elem/</code>). This is used in urbit&#39;s <code>tree</code> publishing system to enable a user to place either a hoon file or a static file in a directory, and have them both result in webpages, with preference given to treating the file as hoon to be evaluated. </p><p>Wide-form <code>/|</code> encloses its arguments in parentheses, with a single space as a delimiter: <code>/|(/!elem/ /elem/)</code> </p><h3 id="---unfiltered--run-a-horn-on-each-file-in-the-current-directory-"><code>/_</code> unfiltered: run a horn on each file in the current directory </h3><p><code>/_</code> can be used in two ways: filtered and unfiltered. </p><p>Unfiltered <code>/_</code> takes a horn as an argument. It produces a new horn representing the result of mapping the supplied horn over the list of files in the current directory. The keys in the resulting map are the basenames of the files in the directory, and each value is the result of running that horn on the contents of the file. </p><p>Example: </p><pre>/= kids /_ /hoon/
65−::
66−`(map term cord)`kids
67−</pre><p>produces a value of type <code>(map term cord)</code>, where each key is the basename (the filename without the prefix), and each value is the result of running the contents of the file through the <code>%hoon</code> mark, which validates that it&#39;s valid hoon code and returns it unmodified. So, the resulting map associates basenames with file contents. </p><p>Wide-form unfiltered <code>/_</code> doesn&#39;t need a delimiter: <code>/= kids /_/hoon/</code> </p><h3 id="---filtered--run-a-horn-on-each-file-in-the-directory-matching-an-aura-"><code>/_</code> filtered: run a horn on each file in the directory matching an aura </h3><p>Filtered <code>/_</code> takes an aura and a horn, and filters the list of files in the current directory by whether their filenames can be parsed to an atom of that aura. It then produces a map where each key is the filename after parsing into that atom type, and each value is the result of running the horn on the contents of that file. </p><p>Example: </p><pre>/= timed-posts /_ @da /md/
68−`(map @da @t)`timed-posts
69−</pre><p>produces a map from dates to cords. This product will only contain files whose names are parsable into <code>@da</code> dates. The values are the file contents converted to a cord of markdown-formatted text. </p><p>Wide-form filtered <code>/_</code> uses <code>_</code> as a delimiter: <code>/= timed-posts /_@da_/md/</code> </p><h3 id="---operate-on-"><code>/;</code> operate on </h3><p><code>/;</code> takes a twig and a horn. The twig should evaluate to a gate, which is then slammed with the result of the horn as its sample. </p><p>Example: </p><pre>/= goo
70− /; |=({a/@ b/@} +(b))
71− /~ [a=0 b=1]
72−::
73−goo
74−</pre><p>produces: <code>2</code> </p><p>Here&#39;s a slightly more complex example with runes that use the filesystem: </p><pre>/= file-length
75− /; |=(a/@t (lent (crip a)))
76− /: /%/path/to/hoon/file /hoon/
77−::
78−file-length
79−</pre><p>produces the number of bytes in the file “/%/path/to/hoon/file.” </p><h3 id="---switch-by-path-"><code>/,</code> switch by path </h3><p><code>/,</code> is a switch statement, which picks a branch to evaluate based on whether the current path matches the path in the switch statement. Takes a sequence of pairs of (path, horn) terminated by a <code>==</code>. No wide-form. </p><p>Example: </p><pre>/= just-right
80− /: /===/right-path :: set path to /%/right-path
81− /,
82− /wrong-path /~ ~
83− /another-wrong-path /~ ~
84− /right-path /~ %evaluate-me :: only evaluate this horn
85− ==
86−::
87−`@t`just-right
88−</pre><p>produces: <code>&#39;evaluate-me&#39;</code> </p><h3 id="---list-"><code>/.</code> list </h3><p>Produce a null-terminated list from a sequence of horns, terminated by a <code>==</code>. No wide-form. </p><p>Example: </p><pre>/= vanes
89− /.
90− /~ %ames
91− /~ %behn
92− /~ %clay
93− /~ %dill
94− /~ %eyre
95− /~ %ford
96− /~ %gall
97− ==
98−::
99−vanes
100−</pre><p>produces: <code>[%ames %behn %clay %dill %eyre %ford %gall ~]</code>. </p><h3 id="---heterogeneous-map-"><code>/*</code> heterogeneous map </h3><p><i>DEPRECATED</i> TODO: remove </p><h3 id="---cast-"><code>/^</code> cast </h3><p><code>/^</code> takes a mold and a horn, and casts the result of the horn to the mold. </p><p>Example: </p><pre>/= liz /^ (list @) :: cast to real list
101− /~ ~[1 2 3] :: no &#39;i&#39; or &#39;t&#39; faces
102−::
103−?&lt; ?=($~ liz) :: prevent find-fork
104−i.liz
105−</pre><p>produces: <code>1</code> </p><p>Without the cast, we wouldn&#39;t be able to access the &#39;i&#39; face of the list. </p><p>Wide-form <code>/^</code> uses <code>^</code> as a delimiter: <code>/^(list @)^/~[1 2 3 ~]</code> </p><h3 id="---insert-dephash-"><code>/#</code> insert dephash </h3><p><code>/#</code> takes a horn and produces a cell of the dependency hash of the result of the horn, and the result itself. </p><p>Example: </p><pre>/= inline /^ {dep/@uvH txt/@t} /# /: /%/my-script /js/
106−::
107−;= ;script: (trip txt.inline) :: set script contents
108− ;script@&quot;/~/on/{&lt;dep.inline&gt;}.js&quot;; :: set script src
109−==
110−</pre><p>produces two <code>&lt;script&gt;</code> tags. The first has its contents set to the contents of the JavaScript file we loaded from clay. The second is an auto-update script that polls the server to check whether the dependency hash has changed. This pattern is used in urbit&#39;s <code>tree</code> web publishing system. </p><p>Wide-form <code>/#</code> does not need a delimiter: <code>/= inline /^ {dep/@uvH txt/@t} /#/:/%/my-script:/js/</code> </p><h3 id="---process-extra-arguments-"><code>/$</code> process extra arguments </h3><p><code>/$</code> will slam a gate on whatever extra arguments have been supplied to this build. At the moment, only HTTP requests forwarded by <code>%eyre</code> contain any extra arguments, and using this rune outside of that context will cause an error. Requests from <code>%eyre</code> contain an argument representing the query string, which can be parsed using the standard library gate <code>++fuel:html</code>. </p><p>Example: </p><pre>/= gas /$ fuel:html
111−::
112−:*
113− %who {&lt;(~(get ju aut.ced.gas) 0)&gt;}
114− %where {(spud s.bem.gas)}
115− %case {(scow %ud p.r.bem.gas)}
116−==
117−</pre><p>produces: [%who &#39;~zod&#39; <code>%where</code> /ford/pages/web <code>%case</code> 60] </p><p>Wide-form <code>/$</code> takes its arguments inside brackets, like <code>/~</code>: <code>/=gas=/$[fuel:html]</code> </p><h3 id="---propagate-extra-arguments-into-renderers-"><code>/%</code> propagate extra arguments into renderers </h3><p><code>/%</code> will forward extra arguments (usually from <code>%eyre</code>) on to any enclosed <code>/renderer/</code>&#39;s. Without this, renderers that use <code>/$</code> to read the extra arguments will crash. </p><p>Example: </p><pre>/= dat /% /tree-json/
118−::
119−dat
120−</pre><p>produces the results of running <code>ren/tree-json</code> on the current path. This renderer needs the query string, which is one of the extra arguments passed in from <code>%eyre</code>. </p><p>Wide-form <code>/%</code> has no delimiter: <code>/%/tree-json/</code> </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/gall/index.htmldeleted−993
@@ -1,993 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="gall-apps-">Gall Apps </h1><p>This is documentation about how to write Gall apps. Some knowledge of Hoon is assumed. </p><blockquote><p>Note: the last major revision of these lessons was in 2016. They need to be rewritten; in some ways they are outdated, and in other ways they were not always accessible enough to beginners. We are planning to rewrite these in the near future. There is still useful information to be found in the meantime. </p></blockquote><h2><div id="api">API Connectors</div></h2><blockquote><p>Note: This lesson depends on some code that needs to be updated before the examples will work correctly. This will be addressed in the near future. We apologize! </p></blockquote><p>Most people have lots of data stored in online services, many of which have APIs. API connectors allow the user to access this data from within their Urbit. </p><p>A security driver allows the user to make authenticated requests to the service&#39;s API, but the user still needs to know the API and send and receive JSON. An API connector puts a layer of porcelain over this to allow the user easier control over their data. </p><p>Each connector should perform two basic functions. First, it should expose a tree of the data in the service that&#39;s accessible through <code>.^</code> and FUSE. Second, it should expose event streams as actions occur in the service. Let&#39;s take a look at how the <code>%gh</code> app accomplishes both for Github. </p><p>After starting <code>%gh</code> (<code>|start %gh</code>), let&#39;s look at the root of the tree that <code>%gh</code> exposes: </p><pre>~your-urbit:dojo&gt; .^(arch %gy /=gh=)
2−[fil=~ dir={[p=~.issues q=~]}]
3−</pre><p><code>%gh</code> is currently a skeleton -- it contains examples of all the functionality necessary for a connector, but many endpoints aren&#39;t implemented. As we can see here, only issues are implemented. We can explore this tree: </p><pre>~your-urbit:dojo&gt; .^(arch %gy /=gh=/issues)
4−[fil=~ dir={[p=~.by-repo q=~] [p=~.mine q=~]}]
5−</pre><p>And eventually: </p><pre>/- gh
6−.^(issue:gh %gx /=gh=/issues/by-repo/philipcmonktest/testing/7)
7−&lt;issue...&gt;
8−login.user:.^(issue:gh %gx /=gh=/issues/by-repo/philipcmonktest/testing/7)
9−&#39;philipcmonktest&#39;
10−</pre><p>The other thing an API connector needs to do is expose event streams. One straightforward way to use this capacity is with the <code>:pipe</code> app: </p><pre>:pipe|connect %gh /listen/philipcmonktest/testing/issues/&#39;issue_comment&#39; %public
11−</pre><p>Now creating an issue results in the following message in your <code>%public</code> <code>:talk</code> channel: </p><pre>~your-urbit[philipcmonktest@github]: opened issue ##11: i found a bug!
12−</pre><p>You&#39;ll also get notifications of issue status changes and comments. </p><p>As is often the case, the best way to write an API connector is to copy an existing one and modify it. We&#39;ll dissect the Github connector here. This code is in <code>/=home=/app/gh/hoon</code>, and it&#39;s also reproduced at the bottom of this page (in case the code drifts out of sync with this doc). </p><p>We&#39;ll go over the two parts to an API connector (one-time reading vs listening for events) separately. </p><h4 id="reading-">Reading </h4><p>A connector exposes a tree of data. Every read request has a <code>care</code>, which is generally either <code>%x</code> or <code>%y. </code>%x<code> is a request for a particular piece of data, while </code>%y<code> is a request for a directory listing. Roughly, </code>%x<code> means Unix </code>cat<code> and </code>%y<code> means Unix </code>ls`. </p><blockquote><p>Sometimes you wish to expose a tree where a part of the path can&#39;t be enumerated. For example, a <code>%y</code> of <code>/issues/by-repo</code> “should” produce a list of all Github users, but we don&#39;t do that because it&#39;s too long. Instead, we just produce our own username (from the <code>web.plan</code> file). You can still access repos from other users, you just don&#39;t see them in the directory listing. </p></blockquote><p>The usual flow for implementing this tree of data makes heavy use of the <code>connector</code> library. This library is well documented in the source, so check out <code>/=home=/lib/connector/hoon</code>. </p><p>The <code>connector</code> library needs to be initialized with definitions of <code>move</code> and <code>sub-result</code> (all the types of data that can be returned by a place). This can just be a line at the top of the main core: </p><pre>=+ connector=(connector move sub-result) :: Set up connector library
13−</pre><p>Most of the Github-specific logic is in <code>++places</code>, which is a list of all the places we can request. A place consists of: </p><pre>++ place
14− $: guard/mold
15− read-x/$-(path move)
16− read-y/$-(path move)
17− sigh-x/$-(jon/json (unit sub-result))
18− sigh-y/$-(jon/json (unit arch))
19− ==
20−</pre><ul><li><p><code>guard</code>, the type of the paths we should match. For example, to match <code>/issues/&lt;user&gt;/&lt;repo&gt;</code> use <code>{$issues @t @t $~}</code>. </p></li><li><p><code>read-x</code>, called when someone tries to read the place with <code>care</code> <code>%x</code>. Should produce a single move, usually either a <code>%diff</code> response if we can immediately answer or a <code>%hiss</code> http request if we need to make a request to the api. See the <code>++read-*</code> functions in <code>++helpers</code> for some common handlers. </p></li><li><p><code>read-y</code>, same as <code>read-x</code> except with care <code>%y</code>. </p></li><li><p><code>sigh-x</code>, called when an http response comes back on this place. You&#39;re given the json of the result, and you should produce either a result or null. Null represents an error. If you didn&#39;t create an http request in <code>read-x</code>, then this should never be called. Use <code>++sigh-strange</code> from <code>++helpers</code> to unconditionally signal an error. </p></li><li><p><code>sigh-y</code>, same as <code>sigh-x</code> except with care <code>%y</code>. Note that a <code>%y</code> request must produce an arch, unlike a <code>%x</code> request, which may produce data of any mark. </p></li></ul><p>Filling out the list of places is a lot of grunt work, but most places are fairly straightforward, and the <code>++read-*</code> helper functions are useful. Check out the library source for more information on those. </p><p>Besides the list of places, we just need to handle the flow of control. <code>++peek</code> and <code>++peer-scry</code> are the interface we expose to the rest of the system while <code>++sigh-httr</code> and <code>++sigh-tang</code> are used to handle responses when we make HTTP requests. </p><ul><li><p><code>++peek</code> should usually just produce <code>~</code>. If there are cases where we can respond directly to a <code>.^</code> request without blocking on anything, we could do it here, but it&#39;s generally not worth the hassle since the same logic should be duplicated in <code>++peer-scry</code>. </p></li><li><p><code>++peer-scry</code> is where the actual handling for a read request goes. In general, we just need to call <code>++read</code> from the <code>connector</code> library with the bone, list of places, care, and path. This will match the path to the appropriate place and run either <code>++read-x</code> or <code>++read-y</code>, depending on the care. </p></li><li><p>If <code>++read-x</code> or <code>++read-y</code> made a successful API request, then the response will come back on <code>++sigh-httr</code>. Here, we just need to parse out the wire and call <code>++sigh</code> from the <code>connector</code> library with the list of places, care, path, and HTTP result. This will match the path to the appropriate place and run either <code>++sigh-x</code> or <code>++sigh-y</code>, depending on the care. </p></li><li><p>If <code>++read-x</code> or <code>++read-y</code> made an API request that failed, then we&#39;ll get a stack trace in <code>++sigh-tang</code>. Here, we just print it out and move on. </p></li></ul><p>That&#39;s really all there is to the reading portion of API connectors. </p><p>One of the most accessible ways to jump into Arvo programming is to just add more places to an existing API connector. It&#39;s useful, small in scope, and comes in bite-sized chunks since most places are less than ten lines of code. </p><h4 id="listening-">Listening </h4><p>Listening for events is fairly service-specific. In some services, we poll for changes. The Twitter connector has an example of this, but note that it predates the <code>connector</code> library and is thus more complicated than it needs to be, and the interface it exposes isn&#39;t standard. In Github, we power our event streams with webhooks. </p><p>For Github, when someone subscribes to <code>/listen/&lt;user&gt;/&lt;repo&gt;/&lt;events...&gt;</code>, we want to produce well-typed results when they occur. </p><p>We only want to create one webhook per event, so in our state we have <code>hook</code>, which is a map of event names to the set of bones which are subscribed to that event. We must always keep this up-to-date. </p><p>Flow of control starts in <code>++peer-listen</code>, where we just call <code>++listen</code>. In <code>++listen</code>, for each event in the list of events, we check to see if we have that hook set up (by checking whether it exists in <code>hook</code>). If so, we call <code>++update-hook</code> to add the current bone to the set of listeners. Otherwise, we call <code>++create-hook</code>, which sends a request to Github to set up the new webhook. We also create an entry in <code>hook</code> with the current bone. </p><p>When we created the webhook, we told Github to send the event to <code>/~/to/gh/gh-&lt;event&gt;.json?anon&amp;wire=/</code>. This turns into a poke. Let&#39;s parse out this url. The first <code>gh</code> is the app name to poke. The next portion, <code>gh-&lt;event&gt;</code> is the mark to convert the JSON to. For example, when the “issues” event fires, it&#39;ll get converted to mark <code>gh-issues</code>. This mark has a conversion routine from <code>json</code> to the <code>issues</code> type, which is defined in the <code>gh</code> structure (<code>/=home=/sur/gh/hoon</code>). Once this conversion happens, the <code>gh</code> app will get poked with the correctly marked data in <code>++poke</code>. </p><p>In <code>++poke</code>, we check <code>hook</code> to find the subscribers to the event that was fired, and we update them. </p><p>That&#39;s really all there is to it. Webhook flow isn&#39;t well standardized, so even if your chosen service is powered by webhooks, your listening code might look rather different. The point is to expose the correct interface. </p><h4 id="github-api-connector-code-">Github API Connector Code </h4><p>In case the code in <code>/=home=/app/gh/hoon</code> drifts out of sync with this doc: </p><pre>:: This is a connector for the Github API v3.
21−::
22−:: You can interact with this in a few different ways:
23−::
24−:: - .^({type} %gx /=gh={/endpoint}) to read data or
25−:: .^(arch %gy /=gh={/endpoint}) to explore the possible
26−:: endpoints.
27−::
28−:: - subscribe to /listen/{owner}/{repo}/{events...} for
29−:: webhook-powered event notifications. For event list, see
30−:: https://developer.github.com/webhooks/.
31−::
32−:: This is written with the standard structure for api
33−:: connectors, as described in lib/connector.hoon.
34−::
35−/? 314
36−/- gh, plan-acct
37−/+ gh-parse, connector
38−::
39−!:
40−=&gt; |%
41− +$ move (pair bone card)
42− +$ card
43− $% [%diff sub-result]
44− [%them wire (unit hiss:eyre)]
45− [%hiss wire [%~ %~] %httr [%hiss hiss:eyre]]
46− ==
47− ::
48− :: Types of results we produce to subscribers.
49− ::
50− +$ sub-result
51− $% [%arch arch]
52− [%gh-issue issue:gh]
53− [%gh-list-issues (list issue:gh)]
54− [%gh-issues issues:gh]
55− [%gh-issue-comment issue-comment:gh]
56− [%json json]
57− [%null %~]
58− ==
59− ::
60− :: Types of webhooks we expect.
61− ::
62− +$ hook-response
63− $% [%gh-issues issues:gh]
64− [%gh-issue-comment issue-comment:gh]
65− ==
66− --
67−=+ connector=(connector move sub-result) :: Set up connector library
68−::
69−|_ $: hid=bowl:gall
70− hook=(map @t [id=@t listeners=(set bone)]) :: map events to listeners
71− ==
72−:: ++ prep _`. :: Clear state when code changes
73−::
74−:: List of endpoints
75−::
76−++ places
77− |= wir=wire
78− ^- (list place:connector)
79− =+ (helpers:connector ost.hid wir &quot;https://api.github.com&quot;)
80− =&gt; |% :: gh-specific helpers
81− ++ sigh-list-issues-x
82− |= jon=json
83− %+ bind ((ar:jo issue:gh-parse) jon)
84− |= issues=(list issue:gh)
85− gh-list-issues+issues
86− ::
87− ++ sigh-list-issues-y
88− |= jon=json
89− %+ bind ((ar:jo issue:gh-parse) jon)
90− |= issues=(list issue:gh)
91− :- `(shax (jam issues))
92− (malt (turn issues |=(issue:gh [(rsh 3 2 (scot %ui number)) ~])))
93− --
94− :~ ^- place :: /
95− :* guard=,%~
96− read-x=read-null
97− read-y=(read-static %issues ~)
98− sigh-x=sigh-strange
99− sigh-y=sigh-strange
100− ==
101− ^- place :: /issues
102− :* guard=,[%issues %~]
103− read-x=read-null
104− read-y=(read-static %mine %by-repo ~)
105− sigh-x=sigh-strange
106− sigh-y=sigh-strange
107− ==
108− ^- place :: /issues/mine
109− :* guard=,[%issues %mine %~]
110− read-x=(read-get /issues)
111− read-y=(read-get /issues)
112− sigh-x=sigh-list-issues-x
113− sigh-y=sigh-list-issues-y
114− ==
115− ^- place :: /issues/by-repo
116− :* guard=,[%issues %by-repo %~]
117− read-x=read-null
118− ^= read-y
119− |= pax=path
120− =+ /(scot %p our.hid)/home/(scot %da now.hid)/web/plan
121− =+ .^([* acc=(map knot plan-acct)] %cx -)
122− ::
123− ((read-static usr:(~(got by acc) %github) ~) pax)
124− sigh-x=sigh-strange
125− sigh-y=sigh-strange
126− ==
127− ^- place :: /issues/by-repo/&lt;user&gt;
128− :* guard=,[%issues %by-repo @t %~]
129− read-x=read-null
130− read-y=|=(pax=path (get /users/[-.+&gt;.pax]/repos))
131− sigh-x=sigh-strange
132− ^= sigh-y
133− |= jon=json
134− %+ bind ((ar:jo repository:gh-parse) jon)
135− |= repos=(list repository:gh)
136− [~ (malt (turn repos |=(repository:gh [name ~])))]
137− ==
138− ^- place :: /issues/by-repo/&lt;user&gt;/&lt;repo&gt;
139− :* guard=,[%issues %by-repo @t @t %~]
140− read-x=|=(pax=path (get /repos/[-.+&gt;.pax]/[-.+&gt;+.pax]/issues))
141− read-y=|=(pax=path (get /repos/[-.+&gt;.pax]/[-.+&gt;+.pax]/issues))
142− sigh-x=sigh-list-issues-x
143− sigh-y=sigh-list-issues-y
144− ==
145− ^- place :: /issues/by-repo/&lt;user&gt;/&lt;repo&gt;
146− :* guard=,[%issues %by-repo @t @t @t %~]
147− ^= read-x
148− |=(pax=path (get /repos/[-.+&gt;.pax]/[-.+&gt;+.pax]/issues/[-.+&gt;+&gt;.pax]))
149− ::
150− read-y=(read-static ~)
151− ^= sigh-x
152− |= jon=json
153− %+ bind (issue:gh-parse jon)
154− |= issue=issue:gh
155− gh-issue+issue
156− ::
157− sigh-y=sigh-strange
158− ==
159− ==
160−::
161−:: When a peek on a path blocks, ford turns it into a peer on
162−:: /scry/{care}/{path}. You can also just peer to this
163−:: directly.
164−::
165−:: We hand control to ++scry.
166−::
167−++ peer-scry
168− |= pax=path
169− ^- [(list move) _+&gt;.$]
170− ?&gt; ?=([care:clay *] pax)
171− :_ +&gt;.$ :_ ~
172− (read:connector ost.hid (places %read pax) i.pax t.pax)
173−::
174−:: HTTP response. We make sure the response is good, then
175−:: produce the result (as JSON) to whoever sent the request.
176−::
177−++ sigh-httr
178− |= [way=wire res=httr:eyre]
179− ^- [(list move) _+&gt;.$]
180− ?. ?=([%read care:clay @ *] way)
181− ~&amp; res=res
182− [~ +&gt;.$]
183− =* style i.way
184− =* ren i.t.way
185− =* pax t.t.way
186− :_ +&gt;.$ :_ ~
187− :+ ost.hid %diff
188− (sigh:connector (places ren style pax) ren pax res)
189−::
190−:: HTTP error. We just print it out, though maybe we should
191−:: also produce a result so that the request doesn&#39;t hang?
192−::
193−++ sigh-tang
194− |= [way=wire tan=tang]
195− ^- [(list move) _+&gt;.$]
196− %- (slog &gt;%gh-sigh-tang&lt; tan)
197− [[ost.hid %diff null+~]~ +&gt;.$]
198−::
199−:: We can&#39;t actually give the response to pretty much anything
200−:: without blocking, so we just block unconditionally.
201−::
202−++ peek
203− |= [ren=@tas tyl=path]
204− ^- (unit (unit (pair mark *)))
205− ~ ::``noun=[ren tyl]
206−::
207−::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
208−:: Webhook-powered event streams (/listen) ::
209−::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
210−::
211−:: To listen to a webhook-powered stream of events, subscribe
212−:: to /listen/&lt;user&gt;/&lt;repo&gt;/&lt;events...&gt;
213−::
214−:: We hand control to ++listen.
215−::
216−++ peer-listen
217− |= pax=path
218− ^- [(list move) _+&gt;.$]
219− ?. ?=([@ @ *] pax)
220− ~&amp; [%bad-listen-path pax]
221− [~ +&gt;.$]
222− (listen pax)
223−::
224−:: This core handles event subscription requests by starting or
225−:: updating the webhook flow for each event.
226−::
227−++ listen
228− |= pax=path
229− =| mow=(list move)
230− =&lt; abet:listen
231− |%
232− ++ abet :: Resolve core.
233− ^- [(list move) _+&gt;.$]
234− [(flop mow) +&gt;.$]
235− ::
236− ++ send-hiss :: Send a hiss
237− |= hiz=hiss:eyre
238− ^+ +&gt;
239− =+ wir=`wire`[%x %listen pax]
240− +&gt;.$(mow [[ost.hid %hiss wir `~ %httr [%hiss hiz]] mow])
241− ::
242− :: Create or update a webhook to listen for a set of events.
243− ::
244− ++ listen
245− ^+ .
246− =+ pax=pax :: TMI-proofing
247− ?&gt; ?=([@ @ *] pax)
248− =+ events=t.t.pax
249− |- ^+ +&gt;+.$
250− ?~ events
251− +&gt;+.$
252− ?: (~(has by hook) i.events)
253− $(+&gt;+ (update-hook i.events), events t.events)
254− $(+&gt;+ (create-hook i.events), events t.events)
255− ::
256− :: Set up a webhook.
257− ::
258− ++ create-hook
259− |= event=@t
260− ^+ +&gt;
261− ?&gt; ?=([@ @ *] pax)
262− =+ clean-event=`tape`(turn (trip event) |=(a=@tD ?:(=(&#39;_&#39; a) &#39;-&#39; a)))
263− =. hook
264− %+ ~(put by hook) (crip clean-event)
265− =+ %+ fall
266− (~(get by hook) (crip clean-event))
267− *[id=@t listeners=(set bone)]
268− [id (~(put in listeners) ost.hid)]
269− %- send-hiss
270− :* %+ scan
271− =+ [(trip i.pax) (trip i.t.pax)]
272− &quot;https://api.github.com/repos/{-&lt;}/{-&gt;}/hooks&quot;
273− auri:de-purl:html
274− %post ~ ~
275− %- as-octs:mimes:html %- crip %- en-json:html %- pairs:enjs:format :~
276− name+s+%web
277− active+b+&amp;
278− events+a+~[s+event] ::(turn `(list ,@t)`t.t.pax |=(a=@t s=a))
279− :- %config
280− %- pairs:enjs:format :~
281− =+ =+ clean-event
282− &quot;http://107.170.195.5:8443/~/to/gh/gh-{-}.json?anon&amp;wire=/&quot;
283− [%url s+(crip -)]
284− [%&#39;content_type&#39; s+%json]
285− ==
286− ==
287− ==
288− ::
289− :: Add current bone to the list of subscribers for this event.
290− ::
291− ++ update-hook
292− |= event=@t
293− ^+ +&gt;
294− =+ hok=(~(got by hook) event)
295− %_ +&gt;.$
296− hook
297− %+ ~(put by hook) event
298− hok(listeners (~(put in listeners.hok) ost.hid))
299− ==
300− --
301−::
302−:: Pokes that aren&#39;t caught in more specific arms are handled
303−:: here. These should be only from webhooks firing, so if we
304−:: get any mark that we shouldn&#39;t get from a webhook, we reject
305−:: it. Otherwise, we spam out the event to everyone who&#39;s
306−:: listening for that event.
307−::
308−++ poke
309− |= response=hook-response
310− ^- [(list move) _+&gt;.$]
311− =+ hook-data=(~(get by hook) (rsh 3 3 -.response))
312− ?~ hook-data
313− ~&amp; [%strange-hook hook response]
314− [~ +&gt;.$]
315− :: ~&amp; response=response
316− :_ +&gt;.$
317− %+ turn ~(tap in listeners.u.hook-data)
318− |= ost=bone
319− [ost %diff response]
320−--
321−</pre><h2><div id="generators">Generators</div></h2><p>Up until now we&#39;ve poked apps directly. This requires the user to specify the mark, and it requires the app to accept the arguments in a way that&#39;s convenient for users to input. This is the “plumbing” way to interact with apps. Generators are the “porcelain” layer. This is why when you run a command like <code>+ls</code> or <code>|merge</code>, there are no marks in sight. </p><p>We&#39;ve used generators before, back in <a href="/docs/learn/arvo/arvo-internals/admin">Basic Operation</a>. At that point, we just used the generators to produce values -- we didn&#39;t pipe their results into apps. In the dojo cast, the role of a generator is to take a list of arguments and produce a value, which is often, though not always, piped into an app. Generators are pure, stateless functions, and they cannot send moves. </p><p><code>+ls</code> and <code>+cat</code> are commonly-used generators that produce a directory listing and print out a file, respectively. These are useful in themselves, so we generally don&#39;t pipe the results into an app. </p><p>Another generator is <code>+hood/merge</code>. Try running <code>+hood/merge</code> with the normal arguments for <code>|merge</code>: </p><pre>&gt; +hood/merge %home our %they
322−[syd=%home her=~zod sud=%they cas=[%da p=~2018.10.4..21.11.49..901c] gem=%auto]
323−
324−&gt; +hood/merge %home our %they, =gem %this
325−[syd=%home her=~zod sud=%they cas=[%da p=~2018.10.4..21.12.11..ee32] gem=%this]
326−</pre><p>This didn&#39;t run any merge, it just constructed the command that, if sent to <code>:hood</code>, would run it. Note first that, even though it&#39;s not printed, this value has mark <code>kiln-merge</code>. Also, the merge strategy <code>gem=%auto</code> was added automatically. Optional arguments are straightforward with generators. </p><p>In general, generators are prepended by either <code>+</code> or <code>|</code>. The general form is <code>+generator</code>, but often generators are created specifically to work with a single app, they&#39;re usually placed in a subdirectory of gen and run with <code>|</code>. Thus, if <code>my-generator</code> generator is made for use with <code>:my-app</code>, then <code>my-generator</code> is put in <code>/gen/my-app/my-generator.hoon</code>, and can be run directly with <code>+my-app/my-generator &lt;args&gt;</code>. If you want to pipe the result into <code>:my-app</code>, then run <code>:my-app +my-app/my-generator &lt;args&gt;</code>. Because this pattern is so common, this can be abbreviated to <code>:my-app|my-generator &lt;args&gt;</code>. Because most built-in commands are generators for the <code>:hood</code> app, <code>:hood|generator &lt;args&gt;</code> can be shortened to <code>|generator &lt;args&gt;</code>. </p><p>Let&#39;s write a generator called <code>:pong</code> that takes an urbit address, which is of mark <code>urbit</code>, and sends that urbit the message <code>&#39;howdy&#39;</code>. First--without a generator--let&#39;s make <code>:ping</code> that does the same, except that it lets the user optionally specify the message as well. </p><p>We&#39;ll need a new mark for our arguments. Let&#39;s call it <code>ping-message</code>. </p><blockquote><p>For app-specific marks, it&#39;s good style to prefix the name of the mark with the name of the app. Since many apps have several such marks, subdirectories in <code>/mar</code> are rendered as <code>-</code>, so that <code>ping-message</code> is written in (/mar/ping/message.hoon). </p></blockquote><pre>::
327−:::: /mar/ping/message/hoon
328− ::
329−/? 314
330−|_ [to=@p message=@t]
331−++ grab
332− |%
333− +$ noun [@p @t]
334− --
335−--
336−</pre><p>The app can easily be modified to use this (<code>/app/ping.hoon</code>): </p><pre>:: Allows one ship to ping another with a string of text
337−::
338−:::: /app/ping/hoon
339− ::
340−/? 314
341−|%
342− +$ move [bone term wire *]
343−--
344−!:
345−|_ [bowl:gall state=%~]
346−::
347−++ poke-ping-message
348− |= [to=@p message=@t]
349− ~&amp; &#39;sent&#39;
350− ^- [(list move) _+&gt;.$]
351− :- ^- (list move)
352− :~ `move`[ost %poke /sending [to dap] %atom message]
353− ==
354− +&gt;.$
355−::
356−++ poke-atom
357− |= arg=@
358− ~&amp; &#39;received&#39;
359− ^- [(list move) _+&gt;.$]
360− ::
361− ~&amp; [%receiving (@t arg)]
362− [~ +&gt;.$]
363−::
364−++ coup |=(* `+&gt;)
365−--
366−</pre><p>Now we can run this with: </p><pre>~fintud-macrep:dojo&gt; |start %ping
367−&gt;=
368−
369−~fintud-macrep:dojo&gt; :ping &amp;ping-message [~sampel-sipnym &#39;heyya&#39;]
370−&gt;=
371−</pre><p>And on <code>~sampel-sipnym</code>, assuming it&#39;s running <code>:ping</code> as well, we see <code>[%receiving &#39;heyya&#39;]</code>. </p><p>This is an annoying way to invoke the app, though. The <code>[]</code> are mandatory, and optional arguments are hard. Let&#39;s make a generator, <code>+send</code> to make everything nicer. Since it&#39;s specific to <code>:ping</code>, let&#39;s put it in <code>/gen/ping/send.hoon</code>: </p><pre>:- %say
372−|= [^ [to=@p message=?(%~ [text=@t %~])] %~]
373−[%ping-message to ?~(message &#39;howdy&#39; text.message)]
374−</pre><p>A couple of new things here. Firstly, <code>message=?(%~ [text=@t %~])] %~]</code> should be read as “the message is either null or a pair of text and null”. Generator argument lists are always null-terminated, which makes it convenient to accept lists in tail position (which are particularly annoying without generators). <code>?(a b)</code> is the irregular form of <code>$?(a b)</code>, which is a union type. Thus, <code>?(a b)</code> means the type of anything that&#39;s in either <code>a</code> or <code>b</code>. Thus, in our case, <code>?(~ [text=@t ~])</code> is either null or a pair of text and null. </p><p>This is run as follows: </p><pre>~fintud-macrep:dojo&gt; :ping|send ~sampel-sipnym
375−&gt;=
376−
377−~fintud-macrep:dojo&gt; :ping|send ~sampel-sipnym &#39;how do you do&#39;
378−&gt;=
379−</pre><p>Which causes <code>~sampel-sipnym</code> to print <code>[%receiving &#39;howdy&#39;]</code> and <code>[%receiving &#39;how do you do&#39;]</code>. </p><p>(Note: <code>:ping|send ~sampel-sipnym</code> is short for <code>:ping +ping/send ~sampel-sipnym</code>.) </p><p><b>Exercises</b>: </p><ul><li><p>Create a generator for <code>:sum</code> from <a href="#state">State</a> so that you can run <code>:sum|add 5</code> to add numbers to it. </p></li><li><p>Create a generator for <code>:click</code> from <a href="#backend">Web Apps</a> so that you can run <code>:click|poke</code> to poke it. </p></li></ul><h2><div id="http">Writing an HTTP Request</div></h2><p>There&#39;s a variety of arvo services we haven&#39;t touched on yet. Let&#39;s figure out how to make HTTP requests and set timers. </p><p>Let&#39;s build an uptime-monitoring system. It&#39;ll ping a web service periodically and print out an error when the response code isn&#39;t 2xx. Save the following as <code>app/up.hoon</code>: </p><pre>:: Up-ness monitor. Accepts atom url, &#39;on&#39;, or &#39;off&#39;
380−::
381−:::: /hoon/up/app
382− ::
383−/? 314
384−|%
385−+$ move [bone card]
386−+$ card
387− $% [%hiss wire unit-iden=$~ mark=%httr cage=[mark=%purl vase=purl:eyre]]
388− [%wait wire @da]
389− ==
390−+$ action
391− $% [%on $~] :: enable polling(&#39;on&#39;)
392− [%off $~] :: disable polling(&#39;off)
393− [%target p=cord] :: set poll target(&#39;http://...&#39;)
394− ==
395−--
396−|_ [hid=bowl:gall on=_| in-progress=_| target=@t]
397−++ poke-atom
398− |= url-or-command=@t ^- (quip move _+&gt;)
399− =+ ^- act/action
400− ?: ?=($on url-or-command) [%on ~]
401− ?: ?=($off url-or-command) [%off ~]
402− [%target url-or-command]
403− ?- -.act
404− $target [~ +&gt;.$(target p.act)]
405− $off [~ +&gt;.$(on |)]
406− $on
407− :- ?: |(on in-progress) ~
408− [ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]~
409− +&gt;.$(on &amp;, in-progress &amp;)
410− ==
411−++ sigh-httr
412− |= [wir=wire code=@ud headers=mess:eyre body=(unit octs)]
413− ~&amp; &#39;arrive here&#39;
414− ^- [(list move) _+&gt;.$]
415− ?: &amp;((gte code 200) (lth code 300))
416− ~&amp; [%all-is-well code]
417− :_ +&gt;.$
418− [ost.hid %wait /timer (add ~s10 now.hid)]~
419− ~&amp; [%we-have-a-problem code]
420− ~&amp; [%headers headers]
421− ~&amp; [%body body]
422− :_ +&gt;.$
423− [ost.hid %wait /timer (add ~s10 now.hid)]~
424−++ wake-timer
425− |= [wir=wire $~] ^- (quip move _+&gt;)
426− ?: on
427− :_ +&gt;.$
428− [ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]~
429− [~ +&gt;.$(in-progress |)]
430−::
431−++ prep ~&amp; target _`. :: computed when the source file changes;
432−-- :: here it prints target then resets our state
433−</pre><p>There&#39;s some fancy stuff going on here. We&#39;ll go through it line by line, though. </p><p>There&#39;s two kinds of cards we&#39;re sending to arvo. A <code>%hiss</code> move tells <code>%eyre</code> to make an HTTP request. It expects a <code>(unit iden)</code>, which will be null here because we aren&#39;t doing any authentication; a mark, in this case the http request mark <code>&amp;httr</code>; and some data in the form of a <code>cage</code>, which is a <code>[mark vase]</code>. This is confusing, so the mold in the code quoted above includes a bunch of otherwise unnecessary faces for the purpose of illustration. Compare: <code>[%hiss p=(unit user) q=mark r=cage]</code> from <code>zuse</code>. </p><blockquote><p>You can grep zuse.hoon and arvo.hoon for most of these definitions. However, beware the ambiguity surrounding “hiss”: there&#39;s <code>++hiss</code> in section 3bI of <code>zuse</code> (“Arvo structures”), and there&#39;s <code>%hiss</code> the move that is sent to <code>%eyre</code> to make our HTTP request happen. Here we&#39;re talking about the latter. See <code>++kiss-eyre</code> in <code>zuse</code>. </p></blockquote><blockquote><p>Recall that <code>++unit</code> means “maybe”. Formally, “<code>(unit a)</code> is either null or a pair of null and a value in <code>a</code>”. Also recall that to pull a value out of a unit (<code>u.unit</code>), you must first verify that the unit is not null (for example with <code>?~</code>). See <code>++need</code>. </p></blockquote><p>A <code>purl:eyre</code> is a parsed url structure, which can be created with <code>de-purl:html</code>, which is a function that takes a url as text and parses it into a <code>(unit purl:eyre)</code>. Thus, the result is null if and only if the url is malformed. &#39;Purl&#39; is also the mark which will be applied to this result. </p><p>When you send this request, you can expect a <code>%sigh</code> with the response, which we handle later on in <code>++sigh-httr</code>. </p><p>For <code>%wait</code>, you just pass a <code>@da</code> (absolute date), and arvo will produce a <code>%wake</code> when the time comes. </p><blockquote><p>A timer is guaranteed to not be triggered before the given time, but it&#39;s currently impossible to guarantee the timer will be triggered at exactly the requested time. </p></blockquote><p>Let&#39;s take a look at our state: </p><pre>|_ [hid=bowl:gall on=_| in-progress=_| target=@t]
434−</pre><p>We have three pieces of app-specific state. <code>target</code> is the url we&#39;re monitoring. <code>on</code> and <code>in-progress</code> are booleans representing, respectively, whether or not we&#39;re supposed to keep monitoring and whether or not we&#39;re in the middle of a request. </p><p>The type of booleans is usually written as <code>?</code>, which is a union of <code>&amp;</code> (true) and <code>|</code> false. This type defaults to <code>&amp;</code> (true). In our case, we want both of these to default to <code>|</code> (false). Because of that, we use <code>_|</code> as the type. <code>_value</code> means “take the type of <code>value</code>, but make the default value be <code>value</code>”. Thus, our type is still a boolean, just like <code>?</code>, but the default value is <code>|</code> (false). </p><blockquote><p>This is the same <code>_</code> used in <code>_+&gt;.$</code>, which means “the same type as the value ”+&gt;.$&quot;. In other words, the same type as our current context and state. </p></blockquote><p>Let&#39;s take a look at <code>++poke-atom</code>. When we&#39;re poked with an atom, we first check whether the atom is <code>&#39;off&#39;</code>. If so, we set our state variable <code>on</code> to false. </p><p>If not, we check whether the atom is <code>&#39;on&#39;</code>. If so, we set <code>on</code> and <code>in-progress</code> to true. If it was already either on or in progress, then we don&#39;t take any other immediate action. If it was both off and not in progress, then we send an HTTP request. </p><p>If the argument is neither &#39;off&#39; nor &#39;on&#39;, then we assume it&#39;s an actual url, so we save it in <code>target</code>. </p><p>Here&#39;s the move that sends the HTTP request: </p><pre>[ost.hid %hiss /request ~ %httr %purl (need (de-purl:html target))]
435−</pre><blockquote><p>Remember, we are expected to produce a <b>list</b> of moves. Note the <code>~</code> after the move in the full example. This is a convenient shortcut for creating a list of a single element. It&#39;s part of a small family of such shortcuts. <code>~[a b c]</code> is <code>[a b c ~]</code>, <code>[a b c]~</code> is <code>[[a b c] ~]</code> and <code>`[a b c]</code> is <code>[~ a b c]</code>. These may be mixed and matched to create various convoluted structures and emojis. </p></blockquote><p>The correspondence between this move and <code>[bone card]</code> can be hard to visualize on one line. Here it is more pedantically: </p><pre>:* bone=ost.hid :: the move
436− term=%hiss
437− wire=/request
438− unit-iden=~
439− mark=%httr
440− cage=[%purl (need (de-purl:html target))]
441−==
442−</pre><p>When the HTTP response comes back, we handle it with <code>++sigh-httr</code>, which, along with the wire the request was sent on, takes the status code, the response headers, and the response body. </p><p>We check whether the status code is between 200 and 300. If so, all is well, and we print a message saying so. We start the timer for ten seconds after the present time. </p><p>If we got a bad status code, then we print out the entire response and start the timer again. </p><p>After ten seconds, arvo will give us a <code>%wake</code> event, which will be handled in <code>++wake-timer</code>. If we&#39;re still supposed to keep monitoring, we send the same HTTP request as before. Otherwise, we set <code>in-progress</code> to false. </p><p>Let&#39;s try it out: </p><pre>~fintud-macrep:dojo&gt; |start %up
443−&gt;=
444−~fintud-macrep:dojo&gt; :up &amp;atom &#39;http://www.google.com&#39;
445−&gt;=
446−[%all-is-well 200]
447−[%all-is-well 200]
448−~fintud-macrep:dojo&gt; :up &amp;atom &#39;http://example.com&#39;
449−&gt;=
450−[%all-is-well 200]
451−~fintud-macrep:dojo&gt; :up &amp;atom &#39;http://google.com&#39;
452−&gt;=
453−[%we-have-a-problem 301]
454−[ %headers
455− ~[
456− [p=&#39;X-Frame-Options&#39; q=&#39;SAMEORIGIN&#39;]
457− [p=&#39;X-XSS-Protection&#39; q=&#39;1; mode=block&#39;]
458− [p=&#39;Content-Length&#39; q=&#39;219&#39;]
459− [p=&#39;Server&#39; q=&#39;gws&#39;]
460− [p=&#39;Cache-Control&#39; q=&#39;public, max-age=2592000&#39;]
461− [p=&#39;Expires&#39; q=&#39;Sun, 10 Jan 2016 23:45:05 GMT&#39;]
462− [p=&#39;Date&#39; q=&#39;Fri, 11 Dec 2015 23:45:05 GMT&#39;]
463− [p=&#39;Content-Type&#39; q=&#39;text/html; charset=UTF-8&#39;]
464− [p=&#39;Location&#39; q=&#39;http://www.google.com/&#39;]
465− ]
466−]
467−[ %body
468− [ ~
469− [ p=219
470− q
471− \/&#39;&lt;HTML&gt;&lt;HEAD&gt;&lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html;charset=utf-8&quot;&gt;\0a&lt;TITLE&gt;301 Moved&lt;/TI\/
472− TLE&gt;&lt;/HEAD&gt;&lt;BODY&gt;\0a&lt;H1&gt;301 Moved&lt;/H1&gt;\0aThe document has moved\0a&lt;A HREF=&quot;http://www.google.com/&quot;&gt;her
473− e&lt;/A&gt;.\0d\0a&lt;/BODY&gt;&lt;/HTML&gt;\0d\0a&#39;
474− \/ \/
475− ]
476− ]
477−]
478−~fintud-macrep:dojo&gt; :up &amp;atom &#39;off&#39;
479−</pre><h2><div id="marks">Marks</div></h2><p>We&#39;ve used predefined marks already, but we haven&#39;t yet created our own marks. Let&#39;s write a sample mark of our own, then chain it together with some preexisting ones to have fun with type conversions. </p><p>Let&#39;s make a small “cord” mark. “Cord” is a name we use for <code>@t</code> text, but there&#39;s no predefined mark for it. Let&#39;s put the following code in: <code>/mar/cord.hoon</code>: </p><pre>/? 314
480−|_ cod=@t
481−++ grab
482− |%
483− ++ atom |=(arg=@ `@t`(scot %ud arg))
484− --
485−++ grow
486− |%
487− ++ md cod
488− --
489−--
490−</pre><p><code>/? 314</code> is the required version number, just like in apps. After that everything&#39;s in a <code>|_</code>, which is a <code>|%</code> core, but with input arguments. In our case, the argument is the marked data. </p><p>There are three possible top-level arms in the <code>|_</code> core, <code>++grab</code>, <code>++grow</code>, and <code>++grad</code> (which is used for revision control, covered elsewhere). <code>++grab</code> specifies functions to convert from another mark to the current mark. <code>++grow</code> specifies how to convert from the current mark to another one. </p><p>In our case, we only define one arm in <code>++grab</code>, namely <code>++atom</code>. This allows us to convert any atom to a cord. <code>++scot</code> is a standard library function in <code>hoon.hoon</code> which pretty-prints atoms of various types. We want to treat the atom as an unsigned decimal number, so we give <code>%ud</code> and the given argument to <code>++scot</code>. Thus, the form of an arm in <code>++grab</code> is <code>|=(other-mark-type this-mark-value)</code>. </p><p>In <code>++grow</code>, we just convert to the <code>md</code> mark, which is just a <code>@t</code> internally, but it has fancy conversion functions to things like html. <code>++md</code> isn&#39;t a function because the “argument” is already a <code>@t</code>, so we can just produce the new value directly. </p><p>Let&#39;s play around a bit with this mark. First, let&#39;s take a marked atom and convert it to our new mark. </p><pre>~fintud-macrep:dojo&gt; &amp;atom 9
491−9
492−
493−~fintud-macrep:dojo&gt; &amp;cord &amp;atom 9
494−&#39;9&#39;
495−
496−~fintud-macrep:dojo&gt; &amp;cord &amp;atom &amp;cord &amp;atom 9
497− &#39;57&#39;
498−</pre><p>ASCII 9 is 57. There&#39;s no requirement, implicit or otherwise, that conversions back and forth between marks be inverses of each other. These are semantic conversions, in that they refer to the same concept. They&#39;re not isomorphisms. </p><p>Let&#39;s play around a little more: </p><pre>~fintud-macrep:dojo&gt; &amp;md &amp;cord &amp;atom 17
499−&#39;17&#39;
500−
501−~fintud-macrep:dojo&gt; &amp;hymn &amp;md &amp;cord &amp;atom 17
502−[ [%html ~]
503− [[%head ~] ~]
504− [[%body ~] [g=[n=%pre a=~] c=~[[g=[n=%$ a=~[[n=%$ v=&quot;17&quot;]]] c=~]]] ~]
505− ~
506−]
507−</pre><p>That was exciting. If you squint at that, it looks an awful lot like html. Our value <code>17</code> is still in there, in the body. <code>urb</code> is the mark we render most web pages to. It makes sure you have a complete skeleton of a web page. Of course, by the time this gets to the web page, it&#39;s plain html. Let&#39;s do the final step in the conversion. </p><pre>~fintud-macrep:dojo&gt; &amp;mime &amp;hymn &amp;md &amp;cord &amp;atom 17
508−[[%text %html ~] p=52 q=&#39;&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;&lt;pre&gt;17&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;&#39;]
509−</pre><p>This is a mime-typed octet stream with type <code>/text/html</code>, length 121 bytes, and our lowly number <code>17</code> rendered to a web page. <code>cord</code> was just one step in the chain. </p><p>Of course, arvo can infer some parts of this chain: </p><pre>~fintud-macrep:dojo&gt; &amp;cord 17
510−&#39;17&#39;
511−</pre><p>Likewise, <code>md</code> is the only way to get from <code>cord</code> to <code>hymn</code>, so that can be omitted. If we omit the <code>hymn</code>, though, we get: </p><pre>~fintud-macrep:dojo&gt; &amp;mime &amp;cord 17
512−[[%text %x-markdown ~] p=2 q=&#39;17&#39;]
513−</pre><p>Here, we converted straight from <code>cord</code> to <code>md</code> to <code>mime</code>. Arvo decided that was the most straightforward conversion, but it gives a different result than passing it through the <code>hymn</code> mark. </p><p>The minimal correct input, then, is <code>&amp;mime &amp;hymn &amp;cord &amp;atom 17</code>. </p><h2><div id="network">Network Messages</div></h2><p>In the following we assume that you have some knowledge of Hoon. If you don&#39;t, check out chapters 1 and 2 of the Hoon tutorial and check back when you&#39;re ready. </p><p>Let&#39;s get our planets to talk to each other. To listen for and receive messages from other planets, we&#39;ll need an app. Let&#39;s look at a very simple one, <code>echo.hoon</code>: </p><pre>:: Accepts any noun from dojo and prints it out
514−::
515−:::: /===/app/echo/hoon
516− ::
517−!: :: enables debug printfs
518−|% :: forms a core with subject as payload
519−+$ move [bone card] :: defines echo app&#39;s arvo move mold
520−+$ card $% $~ :: defines card (data) mold as null tagged union
521− == :: end of mold definition; see $%
522−-- :: end of card arm definition
523−:: ::
524−|_ [bow=bowl:gall $~] :: forms a core with bowl (app state) as sample
525−++ poke-noun :: begin definition of poke-noun arm
526− |= non=* :: forms a gate which accepts any noun
527− ^- [(list move) _+&gt;.$] :: casts product to mold of moves and context
528− ~&amp; echo+noun+non :: debug printf, i.e. &#39;[%echo %noun *]&#39;
529− [~ +&gt;.$] :: produce a cell of empty list and our state
530−-- :: end of poke-noun arm definition
531−</pre><p>Save this as <code>echo.hoon</code> in the <code>/app</code> directory of your urbit&#39;s pier. </p><p>This is a very simple app that does only one thing. If you poke it with a value, it prints that value out. To try this out, you have to start the app, then you can poke it from the command line with the following commands: </p><pre>~fintud-macrep:dojo&gt; |start %echo
532−&gt;=
533−
534−~fintud-macrep:dojo&gt; :echo 5
535−[%echo %noun 5]
536−&gt;=
537−
538−~fintud-macrep:dojo&gt; :echo [1 2]
539−[%echo %noun [1 2]]
540−&gt;=
541−</pre><blockquote><p>There is currently a bug where the <code>[%echo %noun *]</code> lines are printed <b>above</b> the line you entered, so your output may not look exactly like this. <code>&gt;=</code> means that a command was successfully received and executed. </p></blockquote><p>Most of the app code should be simple enough to guess its function. The important part of this code is the definition of <code>++poke-noun</code>. </p><p>Once an app starts, it&#39;s always running in the background and you interact with it by sending it messages. The most straightforward way to do that is to poke it from the command line, which we we did with <code>:echo 5</code> (<code>:[app-name] [argument(s)]</code>). </p><p>In this case, <code>++poke-noun</code> takes an argument (<b>sample</b>) <code>arg</code> and prints it to dojo with <code>~&amp;</code> (<a href="/docs/reference/hoon-expressions/rune/sig#sigpad/">sigpad</a>). This is an unusual rune that formally “does nothing”, but the interpreter detects it and printfs the first child, before executing the second as if the first didn&#39;t exist. This is a slightly hacky way of printing to the console, but we&#39;ll get to the correct way later on. </p><p>But what does <code>++poke-noun</code> produce? Recall that <code>^-</code> casts to a type. In this case, it&#39;s declaring that the end result (<b>product</b>) of the function (<code>++poke-noun</code>&#39;s <b>gate</b>) will be of type <code>[(list) _+&gt;.$]</code>. But what does this mean? </p><p>The phrase to remember is “a list of moves and our state”. Urbit is a message passing system, so whenever we want to do something that interacts with the rest of the system, we send a message. Thus, a move is Arvo&#39;s equivalent of a syscall. The first thing that <code>++poke-noun</code> produces is a list of messages, called “moves”. In this case, we don&#39;t actually want the system to do anything, so we produce the empty list, <code>~</code> (in the <code>[~ +&gt;.$]</code> line). </p><p>The second thing <code>++poke-noun</code> produces is our state. <code>+&gt;.$</code> refers to a particular address in our subject where our formal app state is stored. It&#39;ll become clear why this is later on, but for now pretend that <code>+&gt;.$</code> is a magic invocation that means “app state”. </p><p>Let&#39;s look at another example. Say we want to only accept a number, and then print out the square of that number. </p><pre>:: Accepts an atom from the dojo and squares it.
542−::
543−:::: /===/app/square/hoon
544− ::
545−!:
546−|% :: no moves in :square
547−+$ move [bone card] :: no cards in :square
548−+$ card $% $~
549− ==
550−--
551−:: :: stateless
552−|_ [bow=bowl:gall $~]
553−++ poke-atom
554− |= tom=@
555− ^- [(list move) _+&gt;.$]
556− ~&amp; square+(mul tom tom)
557− [~ +&gt;.$]
558−--
559−</pre><p>Save this as <code>square.hoon</code> in the <code>/app</code> directory of your urbit&#39;s pier. </p><p>A few things have changed. Firstly, we no longer accept arbitrary nouns because we can only square atoms (integers, in this case an unsigned one). Thus, our argument is now <code>tom=@</code>. Secondly, it&#39;s <code>++poke-atom</code> rather than <code>++poke-noun</code>. </p><h3 id="intro-to-marks-">Intro to marks </h3><p>Are there other <code>++poke</code>s? Yes. In fact, <code>noun</code> and <code>atom</code> are just two of arbitrarily many “marks”. A mark is fundamentally a type definition, but accessible at the Arvo level. Each mark is defined in the <code>/mar</code> directory. Some marks have conversion routines to other marks, and some have diff, patch, and merge algorithms. None of these are required for a mark to exist, however. </p><p><code>noun</code> and <code>atom</code> are two predefined marks. In your <code>/mar</code> directory, there are already many more, and you may add more at will. The type associated with <code>noun</code> is <code>*</code>, and the type associated with <code>atom</code> is <code>@</code>. </p><p>When we poke an app from anywhere, we do so with a mark that searches for the corresponding (<code>++poke-[mark]</code>) arm. Data constructed on the command line is by default marked with <code>noun</code>. In this case, the app is expecting an atom, so we have to explicitly mark the data with <code>atom</code> using <code>&amp;[mark]</code>. Try the following commands: </p><pre>~fintud-macrep:dojo&gt; |start %square
560−&gt;=
561−
562−~fintud-macrep:dojo&gt; :square 6
563−gall: %square: no poke arm for noun
564−
565−~fintud-macrep:dojo&gt; :square &amp;atom 6
566−[%square 36]
567−&gt;=
568−</pre><blockquote><p>Recall the bug where <code>%square</code> may get printed above the input line. </p></blockquote><p>Marks are powerful, and they&#39;re the backbone of Urbit&#39;s data pipeline, so we&#39;ll be getting quite used to them. </p><p><b>Exercise</b>: </p><ul><li><p>Write an app that computes fizzbuzz on its input. </p></li></ul><h4 id="sending-a-message-to-another-urbit-">Sending a message to another urbit </h4><p>Let&#39;s write our first network message! Here&#39;s <code>examples/app/pong.hoon</code>: </p><pre>:: Allows one urbit to send the string &#39;Pong&#39; to
569−:: another urbit.
570−::
571−:::: /===/app/pong/hoon
572− ::
573−!:
574−|%
575−+$ move [bone card]
576−+$ card $% [$poke wire dock poke-contents]
577− ==
578−+$ poke-contents $% [$atom @]
579− ==
580−--
581−|_ [bow=bowl:gall $~] :: stateless
582−::
583−++ poke-urbit
584− |= to=ship
585− ^- [(list move) _+&gt;.$]
586− ~&amp; pong+&#39;Outgoing pong!&#39;
587− :_ +&gt;.$
588− ~[[ost.bow %poke /sending [to dap.bow] %atom &#39;Pong&#39;]]
589−::
590−++ poke-atom
591− |= tom=@
592− ^- [(list move) _+&gt;.$]
593− ~&amp; pong+&#39;Incoming pong!&#39;
594− ~&amp; pong+received+`@t`tom
595− [~ +&gt;.$]
596−::
597−++ coup |=(* [~ +&gt;.$])
598−::
599−--
600−</pre><p>Run it with these commands: </p><pre>~fintud-macrep:dojo&gt; |start %pong
601−&gt;=
602−
603−~fintud-macrep:dojo&gt; :pong &amp;urbit ~sampel-sipnym
604−&gt;=
605−</pre><p>Replace <code>~sampel-sipnym</code> with another urbit. The easiest thing to do is to start a comet, a free and disposable Urbit identity. If you don&#39;t know how to start a comet, see <a href="/docs/getting-started/">the user setup section</a>. Don&#39;t forget to start the <code>%pong</code> app on that urbit, too. You should see, on the foreign urbit, this output: </p><pre>[%pong &#39;Incoming pong!&#39;]
606−[%pong %received &#39;Pong&#39;]
607−</pre><p>Most of the code should be straightforward. In <code>++poke-atom</code>, the only new thing is the expression <code></code> <code>@t</code>tom <code></code>, which is <b>casting</b> the argument <code>tom</code> to type <code>@t</code>. As we already know, <code>@t</code> is the type of “cord” (text string). </p><p>The more interesting part is in <code>++poke-urbit</code>. The <code>urbit</code> mark is an urbit identity, and the Hoon type associated with it is <code>ship</code> or <code>@p</code> (the “p” stands for “phonetic base”). </p><p>Recall that in a <code>++poke</code> arm we produce “a list of moves and our state”. Until now, we&#39;ve left the list of moves empty, since we haven&#39;t wanted to tell Arvo to do anything in particular. Now we want to send a message to another urbit. Thus, we produce a list with one element: </p><pre>~[[ost.bow %poke /sending [to dap.bow] %atom &#39;Pong]]
608−</pre><h4 id="moves-">Moves </h4><p>The general form of a move is <code>[bone term wire *]</code>. </p><p>Or, in pseudo-code: </p><p><code>[&quot;cause&quot; sys-call/action tack-new-layer-on-cause action-specific information]</code> </p><p>Let&#39;s walk through each of these elements step by step. </p><h6 id="bones-----cause-----">Bones (“cause”) </h6><p>If you look up <code>++bone</code> in <code>hoon.hoon</code>, you&#39;ll see that it&#39;s a number (<code>@ud</code>), and that it&#39;s an opaque reference to a duct. <code>++duct</code> in <code>hoon.hoon</code> is a list of <code>wire</code>s, where <code>++wire</code> is an alias for <code>++path</code>. <code>++path</code> is a list of <code>++knot</code>s, which are ASCII text. Thus, a duct is a list of paths, and a bone is an opaque reference to it (in the same way that a Unix file descriptor is an opaque reference to a file structure). Thus, to truly understand bones, we must understand ducts. </p><p>A duct is a stack of causes, again, represented as paths, which are called wires. At the bottom of every duct is a unix event, such as a keystroke, network packet, file change, or timer event. When Arvo is given this event, it routes the event to appropriate kernel module for handling. </p><p>Sometimes, the module can immediately handle the event and produce any necessary results. For example, when we poked the <code>++poke-atom</code> arm above, we poked %gall, our application server, which was able to respond to our poke directly. When the module cannot service the request itself, it sends instructions to another kernel module or application (through the <code>%gall</code> module) to do a specified action, and produces the result from that. </p><p>Furthermore, when one module sends a message to another kernel module or application, it also sends along the duct it was given with its new wire tacked onto the top. Now the duct has two entries, with the unix event on the bottom and the kernel module that handled it on top. This process can continue indefinitely, pushing more and more wires onto the top of the duct. When an entity finally produces a result, a wire is popped off the duct, and the result is passed all the way back down, repeating the process of wire popping sequentially until the bottom of the duct is reached. </p><p>In effect, a duct is an Arvo-level call stack. It&#39;s worth noting that while in traditional call stacks a function call happens synchronously and returns exactly once. In Arvo, multiple moves can be sent at once, are evaluated asynchronously, and each one may be responded to zero or more times. </p><p>The point to take home is that whatever caused <code>++poke-urbit</code> to be called is also the root cause for the network message we&#39;re trying to send. Thus, we say to send the network message along the given bone <code>ost</code>. </p><h5 id="wire--path--">Wire (path) </h5><p>Of course, we have to push a new wire onto our duct before passing it along (or responding to it directly) anywhere. This wire can have any data we want in it, but we don&#39;t need anything specific here, so we just use the wire <code>/sending</code> (<code>/elem1/elem2/elemN</code> is one syntax used to create <code>++path</code>s and <code>++wire</code>s of N elements). If we were expecting a response (which we&#39;re not), it would come back along the <code>/sending</code> wire, meaning that the path <code>/sending</code> will be passed back to the response handler as an argument. Although it&#39;s not required, it&#39;s generally a good idea to make the wire human-readable for bug-handling purposes. </p><h5 id="term--sys-call--">Term (sys-call) </h5><p>Each move also has a <code>term</code>, composed of lowercase ASCII and/or <code>-</code>. This <code>term</code> has the sign <code>@tas</code>. In this case, our <code>term</code> is <code>%poke</code>, which is the name of the particular kind of move we&#39;re sending. You can always use <code>%poke</code> to message an app. Other common names include <code>%warp</code>, to read from the filesystem; <code>%wait</code>, to set a timer; and <code>%them</code>, to send an http request. </p><p>The move ends with <code>*</code> (that is, any noun) since each type of move takes different data. In our case, a <code>%poke</code> move takes a target (urbit and app) and marked data, then pokes the arm of the corresponding mark on that app on that urbit with that data. <code>[to-urbit-address %pong]</code> is the target urbit and app, <code>%atom</code> is the <code>mark</code>, and<code>&#39;Pong&#39;</code> is the data. </p><p>When Arvo receives a <code>%poke</code> move, it calls the appropriate <code>++poke</code>. The same mechanism is used for sending messages between apps on the same urbit as for sending messages between apps on different urbits. </p><blockquote><p>We said earlier that we&#39;re not expecting a response. This is not entirely true: the <code>++coup</code> is called when we receive acknowledgment that the <code>++poke</code> was called. We don&#39;t do anything with this information right now, but we could. </p></blockquote><p><b>Exercises</b>: </p><ul><li><p>Extend either of the apps in the first two exercises to accept input over the network in the same way as <code>pong</code>. </p></li><li><p>Modify <code>pong.hoon</code> to print out a message when it receives acknowledgement. </p></li><li><p>Write two apps, <code>even</code> and <code>odd</code>. When you pass an atom to <code>even</code>, check whether it&#39;s even. If so, divide it by two and recurse; otherwise, poke <code>odd</code> with it. When <code>odd</code> receives an atom, check whether it&#39;s equal to one. If so, terminate, printing “%success”. Otherwise, check whether it&#39;s odd. If so, multiply it by three, add one, and recurse; otherwise, poke <code>even</code> with it. When either app receives a number, print it out along with the name of the app. In the end, you should be able to watch Collatz&#39;s conjecture play out between the two apps. Sample output: </p></li></ul><pre>~fintud-macrep:dojo&gt; :even &amp;atom 18
609−[%even 18]
610−[%odd 9]
611−[%even 28]
612−[%even 14]
613−[%odd 7]
614−[%even 22]
615−[%odd 11]
616−[%even 34]
617−[%odd 17]
618−[%even 52]
619−[%even 26]
620−[%odd 13]
621−[%even 40]
622−[%even 20]
623−[%even 10]
624−[%odd 5]
625−[%even 16]
626−[%even 8]
627−[%even 4]
628−[%even 2]
629−%success
630−</pre><ul><li><p>Put <code>even</code> and <code>odd</code> on two separate urbits and pass the messages over the network. Post a link to a working solution in :talk to receive a cookie. </p></li></ul><h2><div id="security">Security Drivers</div></h2><p>A security driver is a file in <code>/=home=/sec/&lt;tld&gt;/&lt;domain&gt;/hoon</code> that handles the authentication for all HTTP requests to <code>https://&lt;domain&gt;.&lt;tld&gt;</code>. When anything in Urbit makes an HTTP request through <code>%eyre</code> (our web server), it checks to see if we have a security driver for the requested domain, and if so filters the request through the driver. The security driver will usually either decorate the request with the needed credentials if it has them, or else it will guide the user through the process of authenticating Urbit with the service. </p><p>Each web service needs its own security driver, but most of them are pretty standard. We recommend starting with an existing security driver based on your needed authentication method (e.g. basic auth, OAuth1, OAuth2), and changing whatever is specific to your service. </p><p>The best strategy for building security drivers is to copy a similar one and tweak it until it works for you. The best representatives are Github for Basic Authentication, Twitter for OAuth1, Slack for OAuth2 when access tokens don&#39;t expire, and Google APIs for OAuth2 when access tokens do expire. In most cases you&#39;ll need to make very few changes to one of these models. </p><p>Still, it&#39;s worth seeing one or two built from the ground up. Here, we&#39;ll build a connector for the Github API v3. (It&#39;s already in <code>/sec/com/github.hoon</code> if you want to see it.) </p><p>The simplest way to interact with the Github API is to just fetch https://api.github.com from the dojo. First, run this: </p><pre>&gt; |init-auth-basic /com/github
631−</pre><p>Input your Github username and password as directed. Next: </p><pre>~your-urbit:dojo&gt; +https://api.github.com
632−</pre><blockquote><p>Note: the current version of this API is outdated, so you&#39;ll get a 403 message at this point. We need to update this so you can follow along with the examples. We&#39;re sorry! </p></blockquote><p>Github exposes a few endpoints to the general web, and the root endpoint is one of them. This gives you a textual representation of a JSON object that contains a bunch of urls to other parts of Github&#39;s API. This is exactly the same response you would get from just running <code>curl https://api.github.com</code> on UNIX. </p><p>If we don&#39;t have a security driver for Github yet, many of the endpoints won&#39;t be accessible, or they will only have publicly accessible information. Most of what we care about requires us to be authenticated. </p><h4 id="basic-auth-">Basic auth </h4><p>Here&#39;s a simple security driver: </p><pre>:: Test url +https://api.github.com/user
633−::
634−:::: /hoon/github/com/sec
635− ::
636−/+ basic-auth
637−!:
638−|_ [bal=(bale keys:basic-auth) $~]
639−++ aut ~(standard basic-auth bal ~)
640−++ filter-request out-adding-header:aut
641−--
642−</pre><p>Github supports authentication through either Basic Authentication or OAuth2. We&#39;ll show the basic auth example first, but in general we&#39;d prefer OAuth2. </p><p>Since this driver is for Github, put it in <code>/=home=/sec/com/github/hoon</code>. </p><p>To try this out, we first have to initialize our credentials with <code>|init-auth-basic</code>, which prompts for the url of the service (api.github.com), username, and password. It stores this information in a manner that <code>%eyre</code> knows how to decode and send put into your <code>bale</code>. Note that <code>|init-auth-basic</code> is standard for basic auth, but other auth schemes (like OAuth) are initialized in other ways. </p><p>After you&#39;ve run <code>|init-auth-basic</code>, you should be able to run <code>+https://api.github.com/user</code> and get a response indicating who you&#39;re logged in as. </p><p>You can similarly POST: </p><pre>~your-urbit:dojo&gt; +https://api.github.com/gists &amp;json _(cork de-json:html need) &#39;{&quot;files&quot;:{&quot;file1.txt&quot;:{&quot;content&quot;:&quot;can\&#39;t stop the signal&quot;}}}&#39;
643−</pre><p>This creates a gist, go to <code>https://gist.github.com/&lt;username&gt;</code> to see it. </p><p>The <code>+url</code> syntax used in “source” position makes a GET request, but if you pass it data it will make a POST request with that data as the body. This request is authenticated seamlessly. You can send data of any mark as long as it has a conversion path to <code>%mime</code>. </p><p>Let&#39;s take a look at the code and see if we can figure out what&#39;s happening here: </p><pre>/+ basic-auth
644−</pre><p>First, we load a library called <code>basic-auth</code>. This library exposes two items. <code>keys</code> is the type of the basic auth key, which is essentially a base64&#39;d username and password. <code>standard</code> accepts a <code>bale</code> and produces a core with everything we&#39;ll need to implement basic auth. </p><p>Every security driver needs some amount of state, which is stored in <code>bale</code>. <code>bale</code> contains: </p><ul><li><p><code>our</code>, our urbit name </p></li><li><p><code>now</code>, the current time </p></li><li><p><code>eny</code>, 256 bits of entropy </p></li><li><p><code>byk</code>, the urbit, desk and case which the security driver is running from </p></li><li><p><code>usr</code>, the particular identity we&#39;re logging in with </p></li><li><p><code>dom</code>, the site we&#39;re accessing </p></li><li><p><code>key</code>, the secrets required to authenticate requests. The type for this entry is supplied by the programmer as the argument to <code>++bale</code>. Thus, in our case, <code>key</code> in our bale is of type <code>keys:basic-auth</code>. </p></li></ul><p>Additionally, a security driver contains at least one out of the five “special” arms: </p><ul><li><p><code>++filter-request</code> is a function which takes a hiss (http request) and produces a <code>sec-move</code> (defined in zuse), which is one of: </p><ul><li><p><code>[%send hiss]</code>, which sends the new hiss. This is the case in, for example, basic auth, where all we need to do is add an extra header to the request. </p></li><li><p><code>[%give httr]</code>, where httr is an http response. This immediately returns an http response to the sender. </p></li><li><p><code>[%show purl]</code>, where a purl is a parsed url. This displays a message asking the user to visit the given url to continue the authentication process. </p></li><li><p><code>[%redo ~]</code>, which redoes the request. </p></li><li><p><code>%eyre</code> calls <code>++filter-request</code> just before sending an HTTP request to the specified domain. This allows the security driver to filter the requests, decorating them with authentication data. </p></li></ul></li><li><p><code>++filter-response</code> is a function which takes an httr and produces a <code>sec-move</code>. <code>%eyre</code> calls it after receiving an HTTP response from the specified domain. This allows the security driver to handle authentication errors, commonly caused by expired tokens, and retry the request. </p></li><li><p><code>++receive-auth-query-string</code> is a function that takes a <code>quay</code> (list of query parameters) and produces a <code>sec-move</code>. <code>%eyre</code> calls it when it receives a request on the callback url. Generally, this happens in OAuth after the user has granted access to the urbit app, and the service makes a request to the callback url with the code. The security driver should then make a request to convert the code into an access token. </p></li><li><p><code>++receive-auth-response</code> is a function that takes an httr and produces a <code>sec-move</code>. <code>%eyre</code> calls it when it gets a response to the request made in <code>++receive-auth-query-string</code>. </p></li><li><p><code>++update</code> is a function which converts old state to a new format when the security driver gets updated. If you want to just get rid of the old state, define <code>++discard-state</code> as <code>~</code>. </p></li></ul><p>For basic auth, we only have to worry about <code>++filter-request</code>, since all we need to do is add the correct header to each request. Our <code>++aut</code> core contains a function <code>++out-addding-header</code>, which does exactly what we want. </p><p>Where do the keys come from, though? Remember we ran <code>|init-auth-basic</code> to input them. This just prompts you for the service url, username, and password, and it stores them next to the driver. In our case, that&#39;s <code>/=home=/sec/com/gitub/api/atom</code>. These keys are stored encrypted, and you don&#39;t want to edit them directly. <code>%eyre</code> loads them directly into your <code>bale</code>. </p><h4 id="oauth2-">OAuth2 </h4><p>Most services are better accessed through some form of OAuth. Github can be accessed with OAuth2, which is a little more complicated than basic auth, but not hugely so. </p><p>The basic steps for OAuth2 are these: </p><ul><li><p>create an app and get its client id and client secret (on Github) </p></li><li><p>store these in Urbit (with <code>|init-oauth2</code>) </p></li><li><p>try to make a request that requires authentication. The security driver should prompt you to visit a particular url. </p></li><li><p>visit the url and click “authorize”, which gives the app access to your account </p></li><li><p>the security driver will turn the code it receives into an access token </p></li><li><p>on every request, include that access token </p></li></ul><p>Creating an app is easy and <a href="https://github.com/settings/applications/new">well-documented</a>. If necessary, set the callback url to <code>/~/ac/github.com/_state/in</code>, and note its client id and client secret. </p><p>Run <code>|init-oauth2</code>, which will prompt for the hostname (api.github.com), client id, and client secret. This will store the information, encrypted, in <code>/=home=/sec/com/github.atom</code>, just as with Basic Authentication. </p><p>Now we need a security driver. Use this: </p><pre>:: Test url +https://api.github.com/user
645−::
646−:::: /hoon/github/com/sec
647− ::
648−/+ oauth2
649−!:
650−::::
651− ::
652−|_ [bal=(bale keys:oauth2) tok=token:oauth2]
653−++ scopes :: comment out scopes to taste
654− :~ &#39;user&#39; &#39;user:email&#39; &#39;user:follow&#39; &#39;public_repo&#39; &#39;repo&#39;
655− &#39;repo_deployment&#39; &#39;repo:status&#39; &#39;delete_repo&#39; &#39;notifications&#39;
656− &#39;gist&#39; &#39;read:repo_hook&#39; &#39;write:repo_hook&#39; &#39;admin:repo_hook&#39;
657− &#39;admin:org_hook&#39; &#39;read:org&#39; &#39;write:org&#39; &#39;admin:org&#39;
658− &#39;read:public_key&#39; &#39;write:public_key&#39; &#39;admin:public_key&#39;
659− ==
660−:: ++aut is a &quot;standard oauth2&quot; core, which implements the
661−:: most common handling of oauth2 semantics. see lib/oauth2 for more details,
662−:: and examples at the bottom of the file.
663−++ aut (~(standard oauth2 bal tok) . |=(tok/token:oauth2 +&gt;(tok tok)))
664−++ filter-request
665− %^ out-add-query-param:aut &#39;access_token&#39;
666− scope=~[%client %admin]
667− oauth-dialog=&#39;https://github.com/login/oauth/authorize&#39;
668−::
669−++ receive-auth-query-string
670− %- in-code-to-token:aut
671− url=&#39;https://github.com/login/oauth/api/access_token&#39;
672−++ receive-auth-response bak-save-token:aut
673−--
674−</pre><p>The oauth2 library provides the main “engine” in <code>standard</code>, just like in basic auth, except that we also have to specify a function to save the access token when we get it. It&#39;s worth noting that this library is well documented in the source, including examples: <code>/=home=/lib/oauth2/hoon</code>. </p><p>Running <code>+http://api.github.com/user</code> tries to make a request to Github with authentication. This loads into the bale the keys, which are of type <code>keys:oauth2</code>, defined in the oauth2 library. We don&#39;t have to worry about the specifics of these keys -- the library handles them -- but they include the client id and the client secret. </p><p>Before the request is sent, <code>%eyre</code> calls <code>++filter-request</code> to decorate it with authentication headers. Since we don&#39;t yet have an access token, we need to prompt the user to visit the “dialog” url. <code>++out-add-query-param</code> checks whether we have a token, and if we don&#39;t it produces <code>%show</code> and a message telling the user to visit the <code>oauth-dialog</code> url we provide, with the extra query parameters added (client id, scopes, and state). </p><p>When the user visits that url, Github will ask them to log in and authorize the application. When they do so, Github will post a request to <code>/~/ac/github.com/_state/in</code> with a code in the query string. <code>%eyre</code> sends the query string to <code>++receive-auth-query-string</code>, which is a function that takes a quay and produces a <code>sec-move</code>. <code>++in-code-to-token</code> from our <code>aut</code> takes the <code>code</code> parameter from the quay and uses it to create a request to the given url. This request includes the client id, the client secret, and the code we just got. </p><p>Github&#39;s response to that request includes an access token in its body. This is handled in <code>++receive-auth-response</code>. <code>++bak-save-token</code> extracts that token and gives it to the function that we passed in the definition of <code>++aut</code>. In our case, we just save that token into our state for later usage. </p><p>Now we have the credentials we need, so <code>++filter-request</code> is called with the original request, and <code>++out-add-query-param</code> passes the request through with the addition of the query parameter <code>access_token</code>. </p><p>Just like with Basic Authentication, you should be able to run <code>+https://api.github.com/user</code> and get a response indicating who you&#39;re logged in as. </p><p>Some drivers a slightly more complicated. For example, Github&#39;s access token&#39;s don&#39;t expire, but that&#39;s not the case for all service. The googleapis driver shows the flow when the access token can expire. Twitter uses OAuth1, for which we have another library. </p><p>Remember, of course, that the best strategy for building security drivers is to copy a similar one and tweak it to taste. </p><h2><div id="state">State</div></h2><p>In the last section we built a few small apps that sent moves. These apps were entirely stateless, however. Most useful apps require some amount of state. Let&#39;s build a trivial stateful app. It&#39;ll keep a running the sum of all the atoms we poke it with. Here&#39;s <code>examples/app/sum.hoon</code>: </p><pre>:: Keeps track of the sum of all the atoms it has been
675−:: poked with and prints the sum out
676−::
677−:::: /===/app/sum/hoon
678− ::
679−!:
680−|%
681−+$ move [bone card]
682−+$ card $% $~
683− ==
684−--
685−|_ [bow=bowl:gall sum=@]
686−::
687−++ poke-atom
688− |= tom=@
689− ^- [(list move) _+&gt;.$]
690− ~&amp; sum+(add sum tom)
691− [~ +&gt;.$(sum (add sum tom))]
692−::
693−++ coup
694− |= [wir=wire err=(unit tang)]
695− ^- [(list move) _+&gt;.$]
696− ?~ err
697− ~&amp; sum+success+&#39;Poke succeeded!&#39;
698− [~ +&gt;.$]
699− ~&amp; sum+error+&#39;Poke failed. Error:&#39;
700− ~&amp; sum+error+err
701− [~ +&gt;.$]
702−::
703−--
704−</pre><p>We can start it with <code>|start %sum</code>, and then run it: </p><pre>~fintud-macrep:dojo&gt; :sum &amp;atom 5
705−[%sum 5]
706−&gt;=
707−
708−~fintud-macrep:dojo&gt; :sum &amp;atom 2
709−[%sum 7]
710−&gt;=
711−
712−~fintud-macrep:dojo&gt; :sum &amp;atom 15
713−[%sum 22]
714−&gt;=
715−</pre><p>We can see that app state is being saved, but when, where, and how? </p><p>The state is stored as the second thing in the <code>|_</code> line. In our case, it&#39;s simply an atom named <code>sum</code>. We change it by producing our state not with <code>+&gt;.$</code> (as before), but with <code>+&gt;.$(sum (add sum tom))</code>. We&#39;ve seen all these parts before, but you might not recognize them. </p><p>Recall in the first chapter that we recursed with the expression <code>$(b (add 3 b))</code>. This meant “produce <code>$</code> with <code>b</code> changed to <code>(add 3 b)</code>. Similarly, <code>+&gt;.$(sum (add sum tom))</code> means ”produce <code>+&gt;.$</code> (i.e. our context, which contains our state) with <code>sum</code> changed to <code>(add sum tom)</code>. </p><p>At a high level, then, when we handle state, we do it explicitly. It&#39;s passed in and produced explicitly. In Unix systems, application state is just a block of memory, which you need to serialize to disk if you want to keep it around for very long. </p><p>In Urbit, app state is a single (usually complex) value. In our example, we have very simple state, so we defined <code>sum=@</code>, meaning that our state is an atom. Of course, <code>sum</code> is just a name, and you&#39;re free to name your state whatever you like. But let&#39;s clarify a couple other things before we continue. </p><p>First, <code>bowl</code> is a set of general global states. This set is managed by the system. It includes things like <code>now</code> (the current time), <code>our</code> (our urbit identity), and <code>eny</code> (512 bits of guaranteed-fresh entropy). For the full list of things in <code>++bowl</code>, search for <code>++ bowl</code> (note: two spaces) in <code>/arvo/zuse.hoon</code>. </p><blockquote><p>This is, perhaps, the most common way to learn Hoon. The easiest way to learn about an identifier you see in code is to search in <code>/arvo/zuse.hoon</code> and <code>/arvo/hoon.hoon</code> for it.\ Urbit&#39;s codebase is less than 30000 lines of code combined, including the hoon parser, the compiler, and the <code>/arvo</code> microkernel, so you can usually use the code and its comments as a reference doc. You can also read <a href="https://github.com/urbit/arvo/blob/master/arvo/zuse.hoon">zuse.hoon</a> and <a href="https://github.com/urbit/arvo/blob/master/arvo/hoon.hoon">hoon.hoon</a> in your browser. </p></blockquote><p>The second thing we should clear up is this: Urbit needs no “serialize to disk” step. Everything you produce in the app state is persistent across calls to the app, restarts of the urbit, and even power failure. If you want to write to the Unix filesystem, you can, but it&#39;s not needed for persistence. Urbit has transactional events, which makes it an <a href="https://en.wikipedia.org/wiki/ACID">ACID operating system</a>. Thus, you don&#39;t have to worry about persistence when programming in Urbit, or ever go through the hassle of having to set up and write to a database. </p><p><b>Exercises</b>: </p><ul><li><p>Modify <code>:sum</code> to reset the counter when you poke it with 0. </p></li><li><p>Write an app called <code>last</code> that prints out the previous value you poked it with. </p></li></ul><p>Sample output: </p><pre>~fintud-macrep:dojo&gt; :last 7
716−[%last 0]
717−&gt;=
718−
719−~fintud-macrep:dojo&gt; :last [1 2 3]
720−[%last 7]
721−&gt;=
722−
723−~fintud-macrep:dojo&gt; :last &#39;howdy&#39;
724−[%last [1 2 3]]
725−</pre><h2><div id="subscriptions">Subscriptions</div></h2><p>We&#39;ve dealt fairly extensively with “poke” messages to an app, but these are somewhat limited. A poke is a one-way message, but more often we want to subscribe to updates from another app. You could build a subscription model out of one-way pokes, but it&#39;s such a common pattern that it&#39;s built into Arvo. </p><p>Let&#39;s take a look at two apps, <code>:source</code> and <code>:sink</code>. First, <code>:source</code>: </p><pre>:: Sends subscription updates to sink.hoon
726−::
727−:::: /===/app/source/hoon
728− ::
729−!:
730−::
731−|%
732− +$ move [bone card]
733− +$ card $% [%diff diff-contents]
734− ==
735−+$ diff-contents $% [%noun *]
736− ==
737−--
738−::
739−|_ [bow=bowl:gall $~]
740−::
741−++ poke-noun
742− |= non=*
743− ^- [(list move) _+&gt;.$]
744− :_ +&gt;.$
745− %+ turn (prey:pubsub:userlib /example-path bow)
746− |=([o=bone *] [o %diff %noun non])
747−::
748−++ peer-example-path
749− |= pax=path
750− ^- [(list move) _+&gt;.$]
751− ~&amp; source+peer-notify+&#39;Someone subscribed to you!&#39;
752− ~&amp; source+[ship+src.bow path+pax]
753− [~ +&gt;.$]
754−::
755−++ coup
756− |= [wir=wire err=(unit tang)]
757− ^- [(list move) _+&gt;.$]
758− ?~ err
759− ~&amp; source+success+&#39;Poke succeeded!&#39;
760− [~ +&gt;.$]
761− ~&amp; source+error+&#39;Poke failed. Error:&#39;
762− ~&amp; source+error+err
763− [~ +&gt;.$]
764−::
765−++ reap
766− |= [wir=wire err=(unit tang)]
767− ^- [(list move) _+&gt;.$]
768− ?~ err
769− ~&amp; source+success+&#39;Peer succeeded!&#39;
770− [~ +&gt;.$]
771− ~&amp; source+error+&#39;Peer failed. Error:&#39;
772− ~&amp; source+error+err
773− [~ +&gt;.$]
774−::
775−--
776−</pre><p>Save this as <code>source.hoon</code> in the <code>/app</code> directory of your urbit&#39;s pier. </p><p>And secondly, <code>:sink</code>: </p><pre>:: Sets up a simple subscription to source.hoon
777−::
778−:::: /===/app/sink/hoon
779− ::
780−!:
781−|%
782−+$ move [bone card]
783−+$ card $% [%peer wire dock path]
784− [%pull wire dock $~]
785− ==
786−--
787−::
788−|_ [bow=bowl:gall val=?]
789−::
790−++ poke-noun
791− |= non=*
792− ^- [(list move) _+&gt;.$]
793− ?: &amp;(=(%on non) val)
794− :_ +&gt;.$(val |)
795− :~ :* ost.bow
796− %peer
797− /subscribe
798− [our.bow %source]
799− /example-path
800− ==
801− ==
802− ?: &amp;(=(%off non) !val)
803− :_ +&gt;.$(val &amp;)
804− ~[[ost.bow %pull /subscribe [our.bow %source] ~]]
805− ~&amp; ?: val
806− sink+unsubscribed+&#39;You are now unsubscribed!&#39;
807− sink+subscribed+&#39;You are now subscribed!&#39;
808− [~ +&gt;.$]
809−::
810−++ diff-noun
811− |= [wir=wire non=*]
812− ^- [(list move) _+&gt;.$]
813− ~&amp; sink+received-data+&#39;You got something!&#39;
814− ~&amp; sink+data+non
815− [~ +&gt;.$]
816−::
817−++ coup
818− |= [wir=wire err=(unit tang)]
819− ^- [(list move) _+&gt;.$]
820− ?~ err
821− ~&amp; sink+success+&#39;Poke succeeded!&#39;
822− [~ +&gt;.$]
823− ~&amp; sink+error+&#39;Poke failed. Error:&#39;
824− ~&amp; sink+error+err
825− [~ +&gt;.$]
826−::
827−++ reap
828− |= [wir=wire err=(unit tang)]
829− ^- [(list move) _+&gt;.$]
830− ?~ err
831− ~&amp; sink+success+&#39;Peer succeeded!&#39;
832− [~ +&gt;.$]
833− ~&amp; sink+error+&#39;Peer failed. Error:&#39;
834− ~&amp; sink+error+err
835− [~ +&gt;.$]
836−::
837−--
838−</pre><p>Save this as <code>sink.hoon</code> in the <code>/app</code> directory of your urbit&#39;s pier (make sure both <code>source</code> and <code>sink</code> are on the same ship). </p><p>Two notes: </p><ul><li><p><code>bowl</code> is the type of the system state within our app. For example, it includes things like <code>our</code>, the name of the host urbit, and <code>now</code>, the current time. </p></li><li><p>You may have noticed the separate <code>|%</code> above the application core <code>|_</code>. We usually put our types in another core on top of the application core. We can access these type from our <code>|_</code> because in <code>hoon.hoon</code> files, all cores are called against each other. (The shorthand for &#39;called&#39; is <code>=&gt;</code>.) Thus, the <code>|%</code> with the types is in the context of the <code>|_</code>, as it lies above it: <code>hoon.hoon</code> <code>=&gt; |% w types =&gt; |_</code> </p></li></ul><p>Here&#39;s some sample output of the two working together: </p><pre>~fintud-macrep:dojo&gt; |start %source
839−&gt;=
840−
841−~fintud-macrep:dojo&gt; |start %sink
842−&gt;=
843−
844−~fintud-macrep:dojo&gt; :sink %on
845−[%source %peer-notify &#39;Someone subscribed to you!&#39;]
846−[%source [%ship ~fintud-macrep] %path /]
847−[%sink %success &#39;Peer succeeded!&#39;]
848−&gt;=
849−
850−~fintud-macrep:dojo&gt; :source 5
851−[%sink %received-data &#39;You got something!&#39;]
852−[%sink %data 5]
853−&gt;=
854−
855−~fintud-macrep:dojo&gt; :sink %off
856−&gt;=
857−
858−~fintud-macrep:dojo&gt; :source 6
859−&gt;=
860−
861−~fintud-macrep:dojo&gt; :sink %on
862−[%source %peer-notify &#39;Someone subscribed to you!&#39;]
863−[%source [%ship ~fintud-macrep] %path /]
864−[%sink %success &#39;Peer succeeded!&#39;]
865−&gt;=
866−
867−~fintud-macrep:dojo&gt; :source 7
868−[%sink %received-data &#39;You got something!&#39;]
869−[%sink %data 7]
870−&gt;=
871−</pre><h6 id="-source-">:source </h6><p>Hopefully you can get a sense for what&#39;s happening here. When we poke <code>:sink</code> with <code>%on</code>, <code>:sink</code> subscribes to <code>:source</code>, and so whenever we poke <code>:source</code>, <code>:sink</code> gets the update and prints it out. Then we unsubscribe by poking <code>:sink</code> with <code>%off</code>, and <code>:sink</code> stops getting updates. We then resubscribe. </p><p>There&#39;s a fair bit going on in this code. Let&#39;s look at <code>:source</code> first. </p><p>Our definition of <code>move</code> is fairly specific, since we&#39;re only going to sending one kind of move. The <code>%diff</code> move is a subscription update, and its content is marked data which gall routes to our subscribers. </p><p>This is a slightly different kind of move than we&#39;ve dealt with so far. It&#39;s producing a result rather than calling other code (i.e. it&#39;s a return rather than a function call), so if you recall the discussion of ducts, a layer gets popped off the duct rather than added to it. This is why no wire is needed for the move -- we won&#39;t receive anything in response to it. </p><p>Anyways, there are four functions (arms) inside the <code>|_</code>. We already know when <code>++poke-noun</code> is called. <code>++peer-example-path</code> is called when someone tries to subscribe to our app. Of course, you don&#39;t just subscribe to an app; you subscribe to a path on that app. This path comes in as the argument to <code>++peer</code>. </p><p>In our case, we don&#39;t care what path you subscribed on, and all we do is print out that you subscribed. Arvo keeps track of your subscriptions, so you don&#39;t have to. You can access your subscribers by looking at <code>sup</code> in the bowl that&#39;s passed in. <code>sup</code> is of type <code>(map bone {@p path})</code>, which associates bones with the urbit who subscribed, and which path they subscribed on. If you want to communicate with your subscribers, send them messages along their bone. </p><p><code>++poke-noun</code> “spams” the given argument to all our subscribers. There&#39;s a few things we haven&#39;t seen before. Firstly, <code>:_(a b)</code> is the same as <code>[b a]</code>. It&#39;s just a convenient way of formatting things when the first thing in a cell is much more complicated than the second. Thus, we&#39;re producing our state unchanged. </p><p>Our list of moves is the result of a call to <code>++turn</code>. <code>++turn</code> is what many languages call “map” -- it runs a function on every item in a list and collects the results in a list. The list is <code>(prey:pubsub:userlib /example-path bow)</code> and the function is the <code>|=</code> line right after it. </p><p><code>prey:pubsub:userlib</code> is a standard library function defined in <code>zuse.hoon</code>. It takes a path and a bowl and gives you a list of the subscribers who are subscribed on a path that begins with the given path. “Prey” is short for “prefix”. </p><p>Now we have the list of relevant subscribers. This a list of triples, <code>[bone @p path]</code>, where the only thing we really need is the bone, because we don&#39;t need to know their urbit or what exact path they subscribed on. Thus, our transformer function takes <code>[o=bone *]</code> and produces <code>[o %diff %noun non]</code>, which is a move that provides bone <code>o</code> with this subscription update: <code>[%noun non]</code>&quot;. This is fairly dense code, but what it&#39;s doing is straightforward! </p><h6 id="-sink-">:sink </h6><p><code>:source</code> should now make sense. <code>:sink</code> is a little longer, but not much more complicated. </p><p>In <code>:sink</code>, our definition of of <code>++move</code> is different. All moves start with a <code>bone</code>, and we conventionally refer to the second half as the “card”, so that we can say a move is an action that sends a card along a bone. </p><p>We have two kinds of cards here: we <code>%peer</code> to start a subscription, and we <code>%pull</code> to stop it. Both of these are “forward” moves that may receive a response, so they need a wire to tack onto the duct before they pass it on. They also need a target, which is a pair of an urbit and an app name. Additionally, <code>%peer</code> needs a path on that app to subscribe too. <code>%pull</code> doesn&#39;t need this, because its semantics are to cancel any subscriptions coming over this duct. If your bone and wire are the same as when you subscribed, then the cancellation will happen correctly. </p><p>The only state we need for <code>:sink</code> is a boolean to indicate whether we&#39;re already subscribed to <code>:source</code>. We use <code>val=?</code>, where <code>?</code> is the sign of type boolean (similar to <code>*</code>, <code>@</code>), which defaults to true (that is, <code>0</code>). </p><p>In <code>++poke-noun</code> we check our input to see both if it&#39;s <code>%on</code> and we&#39;re available (<code>val</code> is true). If so, we produce the move to subscribe to <code>:source</code>: </p><pre>:~ :* ost.bow
872− %peer
873− /subscribe
874− [our.bow %source]
875− /example-path
876− ==
877−==
878−</pre><p>Also, in the preceding lines, we set <code>val</code> to false (<code>|</code>) with <code>+&gt;.$(val |)</code>. Remember that the <code>:_</code> constructs an inverted cell, with the first child (<code>+&gt;.$(val |</code> in our case) as the tail and the second child as the head. Here, the cell we produce when our subscription is <code>%on</code> and <code>val</code> is true has a head with our new state where <code>val</code> is set to false and a tail of our list of moves, which is shown in the code block above. </p><p>Otherwise, if our input is <code>%off</code> and we&#39;re already subscribed (i.e. <code>val</code> is false), then we unsubscribe from <code>:source</code> and set <code>val</code> back to true (<code>&amp;</code>), again using our handy inverted cell constructor mold <code>:_</code>: </p><pre>:_ +&gt;.$(val &amp;)
879−~[[ost.bow %pull /subscribe [our.bow %source] ~]]
880−</pre><p>It&#39;s important to send over the same bone and wire (<code>/subscribe</code>) as the one we originally subscribed on. </p><p>If neither of these cases are true, then we print our current subscription state, based on whether <code>val</code> is true or false, and return a cell containing a null list of moves and our unchanged app state: </p><pre>~&amp; ?: val
881− sink+unsubscribed+&#39;You are now unsubscribed!&#39;
882− sink+subscribed+&#39;You are now subscribed!&#39;
883−[~ +&gt;.$]
884−</pre><p><code>++diff-noun</code> is called when we get a <code>%diff</code> update along a subscription with a mark of <code>noun</code>. <code>++diff-noun</code> is given the wire that we originally passed with the <code>%peer</code> subscription request along and the data we got back. In our case we just print out the data: </p><pre>~&amp; sink+received-data+&#39;You got something!&#39;
885−~&amp; sink+data+non
886−</pre><p><code>++reap</code> is called when we receive an acknowledgment as to whether the subscription was handled successfully. You can remember that <code>++reap</code> is the counterpart to <code>++peer</code> as it&#39;s pronounced like &#39;peer&#39; backwards. Similarly, <code>coup</code> is similar to &#39;poke&#39; backwards. </p><p>Moving forward, <code>++reap</code> is given the wire we attempted to subscribe over, possibly along with an error message in cases of failure. <code>(unit type)</code> means “either <code>~</code> or <code>[~ type]</code>, which means it&#39;s used like Haskell&#39;s ”maybe&quot; or C&#39;s nullability. If <code>err</code> is <code>~</code>, then the subscription was successful and we tell that to the user. Otherwise, we print out the error message. </p><h2><div id="backend">Backend</div></h2><p>We&#39;ve done purely functional web pages as hook files, and we&#39;ve done command line apps, so now let&#39;s interact with an app over the web. The fundamental concepts are no different than from the command line -- you send “poke” messages to apps and subscribe to data streams. The only difference is that you do it with javascript. </p><p>Let&#39;s create a small web app that counts the number of times you poke it. There&#39;ll be a button to poke the app, and line of text below it saying how many times the app has been poked. We can update this by subscribing our page to the relevant path on its app. </p><p>Save the following as <code>click.hoon</code> in the <code>/app</code> directory of your urbit&#39;s pier. </p><pre>/? 314
887−!:
888−|%
889−++ move [bone %diff %mark *]
890−--
891−!:
892−|_ [hid=bowl:gall clicks=@]
893−++ poke-click
894− |= click=%click
895− ~&amp; [%poked +(clicks)]
896− :_ +&gt;.$(clicks +(clicks))
897− %+ turn (prey:pubsub:userlib /the-path hid)
898− |=([o=bone *] [o %diff %clicks +(clicks)])
899−++ peer-the-path
900− |= pax=path
901− [[[ost.hid %diff %clicks clicks] ~] +&gt;.$]
902−--
903−</pre><p>There&#39;s nothing really new here, except that we use a couple of new marks, <code>click</code> and <code>clicks</code>. When we get poked with a <code>click</code>, we increment the variable <code>clicks</code> in our state and tell all our subscribers the new value. When someone subscribes to us on the path <code>/the-path</code>, we immediately give them the current number of clicks. </p><p>Let&#39;s take a look at the new marks. Save this as <code>/mar/click.hoon</code>: </p><pre>|_ click=%click
904−++ grab
905− |%
906− ++ noun |=(* %click)
907− ++ json
908− |= jon=^json
909− ?&gt; =(&#39;click&#39; (need (so:dejs-soft:format jon)))
910− %click
911− --
912−--
913−</pre><p>The mark <code>click</code> has type <code>%click</code>, which means the only valid value is <code>%click</code>. We can convert from <code>noun</code> by just producing <code>%click</code>. </p><p>We also convert from json by parsing a json string with <code>so:dejs-soft:format</code>, asserting the parsing succeeded with <code>need</code>, and asserting the result was &#39;click&#39; with <code>?&gt;</code>, which asserts that its first child is true. </p><blockquote><p>Note the argument to <code>++json</code>is <code>jon=^json</code>. Why <code>^json</code>? <code>++json</code> shadows the type definition, so if we want to refer to the type, we have to prepend a <code>^</code>. This extends to multiple levels: <code>^^^foo</code> means the fourth most innermost instance of <code>foo</code>. </p></blockquote><blockquote><p><code>dejs-soft:format</code> in <code>zuse</code> is a useful library for parsing complex json into hoon structures. In this case, the <code>:</code> between <code>dejs-soft</code> and <code>format</code> means &#39;inside of&#39;, because <code>dejs-soft</code> is an arm contained within the core <code>format</code>. Our case is actually simple enough that the <code>?&gt;</code> line could have been <code>?&gt; =([%s &#39;click&#39;] jon)</code>. </p></blockquote><p>We can test this mark from the command line (don&#39;t forget to start your app with <code>|start %click</code>) </p><pre>~fintud-macrep:dojo&gt; &amp;click %click
914−%click
915−
916−~fintud-macrep:dojo&gt; &amp;click &amp;json [%s &#39;click&#39;]
917−%click
918−
919−~fintud-macrep:dojo&gt; &amp;click &amp;json &amp;mime [/text/json (as-octs:mimes:html &#39;&quot;click&quot;&#39;)]
920−%click
921−
922−~fintud-macrep:dojo&gt; &amp;click &amp;json &amp;mime [/text/json (as-octs:mimes:html &#39;&quot;clickety&quot;&#39;)]
923−/~fintud-macrep/home/0/mar/click:&lt;[7 5].[8 11]&gt;
924−ford: casting %json to %click
925−ford: cast %click
926−</pre><p>And save the following as <code>/mar/clicks.hoon</code>: </p><pre>|_ clicks=@
927−++ grab
928− |%
929− ++ noun @
930− --
931−++ grow
932− |%
933− ++ json
934− (frond:enjs:format %clicks (numb:enjs:format clicks))
935− --
936−--
937−</pre><p><code>clicks</code> is just an atom. We convert to json by creating an object with a single field “clicks” with our value. </p><blockquote><p>Be sure to check out section 3bD, JSON and XML, in zuse.hoon <code>frond:enjs:format</code> is just a function that takes a key-value pair and produces a JSON object with one element. </p></blockquote><pre>~fintud-macrep:dojo&gt; &amp;json &amp;clicks 6
938−[%o p={[p=&#39;clicks&#39; q=[%n p=~.6]]}]
939−</pre><p>Now that we know the marks involved, take another look at the app above. Everything should be pretty straightforward. Let&#39;s poke the app from the command line. </p><pre>~fintud-macrep:dojo&gt; |start %click
940−&gt;=
941−~fintud-macrep:dojo&gt; :click &amp;click %click
942−[%poked 1]
943−&gt;=
944−~fintud-macrep:dojo&gt; :click &amp;click %click
945−[%poked 2]
946−&gt;=
947−</pre><p><b>Exercise</b>: </p><ul><li><p>Modify <code>:sink</code> from the subscriptions chapter to listen to <code>:click</code> and print out the subscription updates on the command line. </p></li></ul><h2 id="frontend-">Frontend </h2><blockquote><p>Note: the instructions below are outdated and do not work in the current version of Urbit. Feel free to experiment though. </p></blockquote><p>That&#39;s all that&#39;s needed for the back end. The front end is just some “sail” html (Hoon markup for XML) and javascript. Here&#39;s <code>/web/pages/click.hoon</code>: </p><pre>;html
948− ;head
949− ;script(type &quot;text/javascript&quot;, src &quot;//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js&quot;);
950− ;script(type &quot;text/javascript&quot;, src &quot;/~/at/lib/js/urb.js&quot;);
951− ;title: Clickety!
952− ==
953− ;body
954− ;div##cont
955− ;input##go(type &quot;button&quot;, value &quot;Poke!&quot;);
956− ;div##err(class &quot;disabled&quot;);
957− ;div##clicks;
958− ==
959− ;script(type &quot;text/javascript&quot;, src &quot;/pages/click/click.js&quot;);
960− ==
961−==
962−</pre><p>You should recognize the sail syntax from an earlier chapter. Aside from jquery, we also include <code>urb.js</code>, which is a framework for interacting with urbit. </p><p>To view the frontend, point your browser at <code>ship-name.urbit.org/~~/pages/click</code> if you&#39;re on the live network. If you&#39;re running a fake galaxy, navigate to whatever port it&#39;s running on, which is usually: <code>https://localhost:80/~~/pages/click</code>. </p><p>We have a button labeled “Poke!” and a div with id <code>clicks</code> where we&#39;ll put the number of clicks. We also include a small javascript file where the client-side application logic can be found. It&#39;s in <code>/web/pages/click.js</code>: </p><pre>$(function() {
963− var clicks, $go, $clicks, $err
964−
965− $go = $(&#39;##go&#39;)
966− $clicks = $(&#39;##clicks&#39;)
967− $err = $(&#39;##err&#39;)
968−
969− $go.on(&quot;click&quot;,
970− function() {
971− window.urb.send(
972− &quot;click&quot;, {mark: &quot;click-click&quot;}
973− ,function(err,res) {
974− if(err)
975− return $err.text(&quot;There was an error. Sorry!&quot;)
976− if(res.data !== undefined &amp;&amp;
977− res.data.ok !== undefined &amp;&amp;
978− res.data.ok !== true)
979− $err.text(res.data.res)
980− else
981− console.log(&quot;poke succeeded&quot;);
982− })
983− })
984−
985− window.urb.appl = &quot;click&quot;
986− window.urb.bind(&#39;/the-path&#39;,
987− function(err,dat) {
988− clicks = dat.data.clicks
989− $clicks.text(clicks)
990− }
991− )
992−})
993−</pre><p>We set up two event handlers. When we click the button, we run <code>window.urb.send</code>, which sends a poke to the app specified as the first argument, in this case our :click app. The arguments are data, parameters, and the callback. The data is the specific data we want to send. The parameters are all optional, but here&#39;s a list of the available ones: </p><ul><li><p><code>ship</code>: target urbit. Defaults to <code>window.urb.ship</code>, which defaults to the urbit which served the page. </p></li><li><p><code>appl</code>: target app. Defaults to <code>window.urb.appl</code>, which defaults to null. </p></li><li><p><code>mark</code>: mark of the data. Defaults to <code>window.urb.send.mark</code>, which defaults to “json”. </p></li><li><p><code>wire</code>: wire of the poke. Defaults to <code>/</code>. </p></li></ul><p>In our case, we specify only that the mark is “click”. </p><p>The callback function is called when we receive an acknowledgment. If there was an error, we put it in the <code>err</code> div that we defined above. Otherwise, we printf to the console a message saying the poke succeeded. As is common, we gray out the button when it is clicked. It is only reenabled when positive acknowledgement is received. </p><p>Our second event handler is <code>window.urb.bind</code>, which is called immediately when the page is loaded, subscribing the page to the specified data stream on the app set with <code>urb.appl</code> (which is, in this case, :click). It also takes three arguments: path, parameters, and callback. The path is the path on the app to subscribe to. The parameters are all optional (indeed, we omit them entirely here), but are similar to those for <code>send</code>: </p><ul><li><p><code>ship</code>: target urbit. Defaults to <code>window.urb.ship</code>, which defaults to the urbit which served the page. </p></li><li><p><code>appl</code>: target app. Defaults to <code>window.urb.appl</code>, which defaults to null. </p></li><li><p><code>mark</code>: mark of expected data. Data of other marks is converted to this mark on the server before coming to the web front end. Defaults to <code>window.urb.bind.mark</code>, which defaults to “json”. </p></li><li><p><code>wire</code>: wire of the subscription. Defaults to the given path. </p></li></ul><p>The callback function here just updates the data in the <code>clicks</code> div. A truly robust app would intelligently handle errors, of course. </p><p>Note that the app doesn&#39;t have anything web-specific in itself. As far as it knows, it&#39;s just receiving pokes and subscriptions. The javascript is fairly pure as well, sending and receiving json everywhere. The marks are the translation layer, and they&#39;re the only things that need to know how the hoon types map to json. </p><p><b>Exercise</b>: </p><ul><li><p>Open the app in multiple tabs, click the button, and verify that all the tabs stay in sink. Poke it manually from the command line and verify the tabs are updated as well. </p></li></ul></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/generators/index.htmldeleted−119
@@ -1,119 +0,0 @@
1−<html><head></head><meta charset="utf-8" /><body><html><head><meta charset="UTF-8" /><title>Urbit / Docs</title><meta name="viewport" content="width=device-width , initial-scale=1" /><link href="/tilde.ico" rel="icon" /><link href="/css/base.css" rel="stylesheet" /><link href="/css/lists.css" rel="stylesheet" /><link href="/css/visibility.css" rel="stylesheet" /><link href="/css/borders.css" rel="stylesheet" /><link href="/css/colors.css" rel="stylesheet" /><link href="/css/inputs.css" rel="stylesheet" /><link href="/css/typography.css" rel="stylesheet" /><link href="/css/menu.css" rel="stylesheet" /><link href="/css/images.css" rel="stylesheet" /><link href="/css/flex.css" rel="stylesheet" /><script src="https://www.googletagmanager.com/gtag/js?id=UA-47054188-1"></script><script>window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', 'UA-47054188-1');</script></head><body><nav class="bg-black pb-36 menu-hide overflow-y"><div class="container"><div class="row pt-10 mb-3"><div class="col-sm-1 menu-toggle"><img class="w-8 h-8" src="/assets/menu-close.svg" /></div><div class="col-sm-9 col-md-8 col-lg-4 col-sm-offset-2 col-md-offset-1 white"><div class="mb-6"><a href="/primer"><h1>Primer</h1></a><p> </p></div><div class="mb-6"><a href="/posts"><h1>Posts</h1></a><p> </p></div><div class="mb-6"><a href="/docs"><h1>Docs</h1></a><p> </p></div></div></div></div><footer class="container mb-36 white"><div class="row"><div class="col-sm-6 col-sm-offset-3 col-md-offset-2"><div><div class="mb-6"><h4 class="mb-1">Follow</h4><div><a class="text-mono" href="https://twitter.com/@urbit" target="_blank">twitter.com/@urbit</a></div><div><a class="text-mono" href="https://github.com/urbit" target="_blank">github.com/@urbit</a></div></div><div class="mb-6"><h4 class="mb-1">Contact</h4><div class="text-mono text-400">~zod</div><div><a class="text-mono" href="mailto:support@urbit.org">support@urbit.org</a></div></div><div class="mb-6"><h4 class="mb-1">Company</h4><div><a href="/privacy">Privacy Policy</a></div><div><a href="/tos">Terms of Service</a></div><div class="text-400"><a href="/bounty">Bug Bounty + Security</a></div></div></div></div></div></footer></nav><div id="sidebar-mobile" class="bg-gray-light sidebar-hide overflow-y"><div class="container"><div class="col-sm-10"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div><div class="col-sm-1 sidebar-toggle fixed" style="top: 20px; right: 1em"><img class="w-8 h-8 dropdown-right" src="/assets/dropdown.svg" /></div></div></div><div class="container mt-10"><div class="sidebar-container row col-sm-3 fixed pb-30 h-100-md"><div class="col-sm-3 col-lg-6 menu-toggle"><img class="w-8 h-8" src="/assets/menu-open.svg" /></div><div class="col-sm-12 mt-7 sidebar-toggle md-hide"><img class="w-8 h-8 dropdown-left" src="/assets/dropdown.svg" /></div><div class="h-100 col-sm-8 col-md-11 overflow-y sm-hide"><ol class="list-reset h-font mt-6"><li class="mb-4"><a class="h-font text-600" href="/docs/introduction">Introduction</a><ol><li><a class="h-font" href="/docs/introduction/technical-overview">Technical overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/source-code-overview">Source Code Overview</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/contributing">Contributing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/arvo-vs-azimuth">Arvo vs. Azimuth</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/community-tutorials">Community Tutorials</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/introduction/galaxies-stars-and-planets">Galaxies, Stars, and Planets</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/getting-started">Getting Started</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/getting-started/azimuth">Using Bridge</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/installing-urbit">Installing Urbit</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/booting-a-ship">Booting a Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/creating-a-development-ship">Creating a Development Ship</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/getting-started/operating-a-star">Operating a Star</a><ol class="list-reset h-font"></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/learn">Learn</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo">Arvo</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals">Arvo Internals</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ames">Ames</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/behn">Behn</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/admin">Admin and Operations</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/clay">Clay</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/dill">Dill</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/layout">Source layout</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/sail">Sail</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/messaging">Messaging</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/udon">Udon</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/eyre">Eyre</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/gall">Gall Apps</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/shell">Shell (Dojo)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/ford">Ford</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/hall">Hall</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/filesystem">Introduction to the Filesystem</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/publishing">Web (Eyre)</a></li><li><a class="h-font" href="/docs/learn/arvo/arvo-internals/generators">Generators</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/hoon">Hoon</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/hoon/getting-started">Getting Started</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/nouns">Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/the-subject-and-its-legs">The Subject and Its Legs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/arms-and-cores">Arms and Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/gates">Gates (Hoon Functions)</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/multi-gate-cores-and-doors">Multi-gate Cores and Doors</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-programs">Hoon Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/hoon-syntax">Hoon Syntax</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/simple-one-gate-programs">Simple One-Gate Programs</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types">Atoms, Auras, and Simple Cell Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-checking-and-type-inference">Type Checking and Type Inference</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/structures-and-complex-types">Structures and Complex Types</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores">Cores</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/cores-again">Cores Again</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/lists">Standard Library: Lists</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/trees-sets-and-maps">Standard Library: Trees, Sets, and Maps</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/type-polymorphism">Type Polymorphism</a></li><li><a class="h-font" href="/docs/learn/arvo/hoon/examples">Examples</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/nock">Nock</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/nock/definition">Nock Definition</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/explanation">Explanation</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/example">Example</a></li><li><a class="h-font" href="/docs/learn/arvo/nock/implementations">Implementations</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/vere">Vere</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/vere/runtime">C Runtime System</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/c">C in Urbit</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/nouns">Land of Nouns</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/api">API overview by prefix</a></li><li><a class="h-font" href="/docs/learn/arvo/vere/jetting">Writing Jets</a></li></ol></li><li><a class="h-font" href="/docs/learn/arvo/style">Hoon Style Guide</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/arvo/workbook">Hoon Workbook</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/arvo/workbook/list">List of Numbers</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/caesar">Caesar Cipher</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/recursion">Recursion</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/digits">Digits</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/eightball">Magic 8-Ball</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/traffic-light">Traffic Light</a></li><li><a class="h-font" href="/docs/learn/arvo/workbook/bomb">Bomb Defusing</a></li></ol></li></ol></li><li><a class="h-font" href="/docs/learn/azimuth">Azimuth</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/learn/azimuth/blockchain">Why Urbit Uses a Blockchain</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/learn/azimuth/wallet">The Urbit HD Wallet</a><ol class="list-reset h-font"></ol></li></ol></li></ol></li><li class="mb-4"><a class="h-font text-600" href="/docs/reference">Reference</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions">Hoon Expressions</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune">Runes</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/constants">Atoms and strings</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/dot">Nock . (&quot;dot&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/zap">Wild ! (&quot;zap&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/tis">Change Subject = (&quot;tis&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/wut">Conditionals ? (&quot;wut&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bar">Cores | (&quot;bar&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/lus">Arms + (&quot;lus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/col">Cells : (&quot;col&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/cen">Calls % (&quot;cen&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/ket">Casts ^ (&quot;ket&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/bus">Structures $ (&quot;bus&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/mic">Make ; (&quot;mic&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/sig">Hints ~ (&quot;sig&quot;)</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/rune/terminators">Terminators -- and ==</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb">Limbs and Wings</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/limb">Limbs</a></li><li><a class="h-font" href="/docs/reference/hoon-expressions/limb/wing">Wings</a></li></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/basic">Basic Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/advanced">Advanced Types</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/hoon-expressions/irregular">Irregular forms</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/library">Standard library</a><ol class="list-reset h-font"><li><a class="h-font" href="/docs/reference/library/1a">1a: Basic Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1b">1b: Tree Addressing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/1c">1c: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2a">2a: Unit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2b">2b: List Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2c">2c: Bit Arithmetic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2d">2d: Bit Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2e">2e: Insecure Hashing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2f">2f: Noun Ordering</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2g">2g: Unsigned Powers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2h">2h: Set Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2i">2i: Map Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2j">2j: Jar and Jug Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2k">2k: Queue Logic</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2l">2l: Container from Container</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2m">2m: Container from Noun</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2n">2n: Functional Hacks</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2o">2o: Normalizing Containers</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2p">2p: Serialization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/2q">2q: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3a">3a: Modular and Signed Ints</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3b">3b: Floating Point</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3c">3c: Urbit Time</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3d">3d: SHA Hash Family</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3e">3e: (Removed)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3f">3f: Scrambling</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/3g">3g: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4a">4a: Exotic Bases</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4b">4b: Text Processing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4c">4c: Tank Printer</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4d">4d: Parsing (Tracing)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4e">4e: Parsing (Combinators)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4f">4f: Parsing (Rule-Builders)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4g">4g: Parsing (Outside Caller)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4h">4h: Parsing (ASCII Glyphs)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4i">4i: Parsing (Useful Idioms)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4j">4j: Parsing (Bases and Base Digits)</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4k">4k: Atom Printing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4l">4l: Atom Parsing</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4m">4m: Formatting Functions</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4n">4n: Virtualization</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/4o">4o: Molds</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5a">5a: Compiler Utilities</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5b">5b: Macro Expansion</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5c">5c: Compiler Backend &amp; Prettyprinter</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5d">5d: Parser</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5e">5e: Caching Compiler</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5f">5f: Molds and Mold-Builders</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/5g">5g: profiling support</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/library/zuse">Zuse</a><ol class="list-reset h-font"></ol></li></ol></li><li><a class="h-font" href="/docs/reference/glossary">Glossary</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/cheat-sheet">Cheat sheet</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/troubleshooting">Hoon Errors</a><ol class="list-reset h-font"></ol></li><li><a class="h-font" href="/docs/reference/alphabetical-arms">Alphabetical Arms</a><ol class="list-reset h-font"></ol></li></ol></li></ol></div></div><div class="row pb-80"><div class="col-sm-9 col-md-8 col-sm-offset-2 col-md-offset-3 docs"><div><div><h1 id="generators-">Generators </h1><p>Generators are the most straightforward way to write programs for Urbit. They are used for doing computations that do not require persistence: they take an input and produce an output, then disappear. Generators might make sense for listing directory contents, or running unit tests, or fetching the contents of a URL. </p><p>There are four kinds of generators: naked, <code>%say</code>, <code>%get</code>, and <code>%ask</code>. </p><h3 id="naked-generators-">Naked Generators </h3><p>A naked generator is simply a <code>gate</code>; that is, it is an anonymous function that takes a <code>sample</code> (argument) and produces a noun. All you need to do is write a <code>gate</code> and put it into a file in the <code>/gen</code> directory. Let&#39;s take a look at a very simple one: </p><pre>|= a=*
2−a
3−</pre><p>This generator takes one argument of any noun and produces it without any changes. If we put this into a file named <code>echo.hoon</code> in the <code>/gen</code> directory, we can run it from the <a href="/docs/learn/arvo/arvo-internals/shell">Dojo</a>: </p><pre>&gt; +echo 42
4−42
5−</pre><p>This command just passes in 42 and gets 42 back. But what about when we pass in <code>&quot;asdf&quot;</code>? </p><pre>&gt; +echo &quot;asdf&quot;
6−[97 115 100 102 0]
7−</pre><p>We just get a pile of numbers back in the form of a raw <code>noun</code>. The numbers that compose that noun are called <code>atoms</code>, and how they are interpreted is a matter of what <code>aura</code> is being applied to them. For the purposes of this lesson, an <code>aura</code> tells the pretty-printer how to display an <code>atom</code>, but keep in mind that an <code>aura</code> is type metadata and does other things, too. </p><p>In the example above, we didn&#39;t specify an <code>aura</code>, leaving the printer to fend for itself. <code>&quot;asdf&quot;</code> is a <code>tape</code>, a type that is simply a <code>list</code> of <code>cords</code>. A <code>cord</code> is itself an atom represented as a string of UTF-8 characters. When used as part of a <code>tape</code>, the <code>cord</code> is only a single character. So each atom in the <code>[97 115 100 102 0]</code> output corresponds to a component of the <code>tape</code>: 97 is <code>a</code>, 115 is <code>s</code>, 100 is <code>d</code>, 102 is <code>f</code>, and <code>0</code> is the “null” that every list is terminated with. </p><p>We can tell the Dojo to cast -- apply a specific type to -- the output of our generator to see something more familiar: </p><pre>&gt; _tape +echo &quot;asdf&quot;
8−&quot;asdf&quot;
9−</pre><p>Now let&#39;s create a generator with two arguments instead of one. Save the code below as <code>add.hoon</code> in the <code>/gen</code> directory. </p><pre>|= [a=@ud b=@ud]
10−(add a b)
11−</pre><p>Now, run the generator: </p><pre>&gt; +add [3 4]
12−7
13−</pre><p>You may notice our generator takes a cell containing two <code>@ud</code>. This is actually one of the limitations of naked generators. We can only pass one argument. We can get around this, of course, by passing a cell, but it&#39;s less than ideal. Also, a naked generator cannot be called without an argument. This brings us to <code>%say</code> generators. </p><h3 id="-say-generators-"><code>%say</code> Generators </h3><p>We use <code>%say</code> generators when we want to provide something else in Arvo, the Urbit operating system, with metadata about the generator&#39;s output. This is useful when a generator is needed to pipe data to another program, a frequent occurrence. </p><p>To that end, <code>%say</code> generators use <code>mark</code>s to make it clear, to other Arvo computations, exactly what kind of data their output is. A <code>mark</code> is akin to a MIME type on the Arvo level. A <code>mark</code> describes the data in some way, indicating that it&#39;s an <code>%atom</code>, or that it&#39;s a standard such as <code>%json</code>, or even that it&#39;s an application-specific data structure like <code>%talk-command</code>. <code>mark</code>s are not specific to <code>%say</code> generators; whenever data moves between programs in Arvo, that data is marked. </p><p>So, more formally, a <code>%say</code> generator is a <code>cell</code>. The head of that cell is the <code>%say</code> tag, and the tail is a <code>gate</code> that produces a <code>cask</code> -- a pair of the output data and the <code>mark</code> describing that data. </p><p>Below is an example of a <code>%say</code> generator. Save it to <code>add.hoon</code> in the <code>/gen</code> directory. </p><pre>:- %say
14−|= *
15−:- %noun
16−(add 40 2)
17−</pre><p>Now run the generator as below: </p><pre>&gt; +add
18−42
19−</pre><p>Notice that we used no argument, something that is possible with <code>%say</code> generators but impossible with naked generators. We&#39;ll explain that in a moment. For now, let&#39;s focus on the code that is necessary to make something a <code>%say</code> generator. </p><pre>:- %say
20−</pre><p>Recall that the rune <code>:-</code> produces a cell, with the first following expression as its head and the second following expression as its tail. </p><p>The expression above creates a cell with <code>%say</code> as the head. The tail is the <code>|= *</code> expression on the line that follows. </p><pre>|= *
21−:- %noun
22−(add 40 2)
23−</pre><p><code>|= *</code> constructs a gate that takes a noun. This gate will itself produce a <code>cask</code>, which is cell formed by the prepending <code>:-</code>. The head of that <code>cask</code> is <code>%noun</code> and the tail is the rest of the program, <code>(add 40 2)</code>. The tail of the <code>cask</code> will be our actual data produced by the body of the program: in this case, just adding 40 and 2 together. </p><h4 id="-say-generators-with-arguments-"><code>%say</code> generators with arguments </h4><p>We can modify the boilerplate code to allow arguments to be passed into a <code>%say</code> generator, but in a way that gives us more power than we would have if we just used a naked generator. </p><p>Naked generators are limited because they have no way of accessing data that exists in Arvo, such as the date and time or pieces of fresh entropy. In <code>%say</code> generators, however, we can access that kind of subject by identifying them in the gate&#39;s sample, which we only specified as <code>*</code> in the previous few examples. But we can do more with <code>%say</code> generators if we do more with that sample. Any valid sample will follow this 3-tuple scheme: </p><p><code>[[now, eny, beak] [list of unnamed arguments] [list of named arguments]]</code> </p><p>This entire structure is a noun, which is why <code>*</code> is a valid sample if we wish to not use any of the information here in a generator. But let&#39;s look at each of these three elements, piece by piece. </p><p>The <b>first part</b> of the above 3-tuple is a noun that is composed of three atoms: </p><p><code>now</code> is the current time. <code>eny</code> is 512 bits of entropy for seeding random number generators. <code>beak</code> contains the current ship, desk, and case. </p><p>You can access each of those pieces of data by typing their names into the Dojo. But in a generator, we need to put faces (variable names) onto that data so we can easily use it in the program. We can do so like this: </p><pre>|= [[now=@da eny=@uvJ bec=beak] ~ ~]
24−</pre><p>Any of those pieces of data could be omitted by replacing part of the noun with <code>*</code> rather than giving them faces. For example, <code>[now=@da * bec=beak]</code> if we didn&#39;t want <code>eny</code>, or <code>[* * bec=beak]</code> if we only wanted <code>beak</code>. </p><p>The <b>second part</b> of the sample is a <code>list</code> of arguments that <i>must</i> be passed to the generator as it is run. Because it&#39;s a <code>list</code>, this element needs to be terminated with a <code>~</code>. In the example above, we used <code>~</code>, the empty list, to represent this second part. But that would mean we don&#39;t want to use any new faces for our generator. So a sample where we want to declare a single required argument would look like this: </p><pre>|= [* [n=@ud ~] ~]
25−</pre><p>In the above code, we use a <code>*</code> to ignore any of the information that would go in the first part of the sample, somewhat similar to how we use a <code>~</code> to say “nothing here” for the second or third parts of the sample. </p><p>But to use both parts together, our gate and sample would look like this: </p><pre>|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] ~]
26−</pre><p>The <b>third part</b> of the sample is a list of <i>optional</i> arguments. These arguments may be passed to the program as it&#39;s being run, but the program doesn&#39;t require them. The syntax for the third part is just like the syntax for the second part, besides its position: </p><pre>|= [* ~ [bet=@ud ~]]
27−</pre><p>Let&#39;s look at an example that uses all three parts. Save the code below in a file called <code>dice.hoon</code> in your <code>/gen</code> directory. </p><pre>:- %say
28−|= [[now=@da eny=@uvJ bec=beak] [n=@ud ~] [bet=@ud ~]]
29−:- %noun
30−[(~(rad og eny) n) bet]
31−</pre><p>This is a very simple dice program with an optional betting functionality. In the code, our sample specifies faces on all of the Arvo data, meaning that we can easily access them. We also require the argument <code>[n=@ud ~]</code>, and allow the <i>optional</i> argument <code>[bet=@ud ~]</code>. </p><p>But there&#39;s something new: <code>(~(rad og eny) n)</code>. This code pulls the <code>rad</code> arm out of the <code>og</code> core with the subject of <code>eny</code>. Recall that <code>eny</code> is our entropy value, so this is used to seed the generator. The <code>rad</code> arm will give us a pseudorandom number between 0 and <code>n</code>. Then we form a cell with the result and <code>bet</code>, the optional named argument specified previously. </p><p>We can run this generator like so: </p><pre>&gt; +dice 6, =bet 2
32−[4 2]
33−
34−&gt; +dice 6
35−[5 0]
36−
37−&gt; +dice 6
38−[2 0]
39−
40−&gt; +dice 6, =bet 200
41−[0 200]
42−
43−&gt; +dice
44−nest-fail
45−</pre><p>We get a different value from the same generator between runs, something that isn&#39;t possible with a naked generator. Another novelty is the ability to choose to not use the second argument. </p><h5 id="arguments-without-a-cell-">Arguments without a cell </h5><p>Also unlike a naked generator, we don&#39;t need to put our arguments together into a cell. Swap the code below into your <code>add.hoon</code> file. </p><pre>:- %say
46−|= [* [a=@ud b=@ud ~] ~]
47−:- %noun
48−(add a b)
49−</pre><p>In the above code we&#39;re again creating a <code>%say</code> generator, but the sample of our gate is a little different than before. We are using <code>*</code> for the first part of the sample, because we don&#39;t use any Arvo data in this program. We are using a <code>~</code> for the third part, because we aren&#39;t allowing optional arguments -- the list of optional arguments is <i>empty</i>. </p><p>Run a command like the one below in the Dojo. Notice that you can use two arguments that aren&#39;t in the cells. </p><pre>&gt; +add 40 2
50−42
51−</pre><h3 id="-ask-generators-"><code>%ask</code> generators </h3><p>We use the <code>%ask</code> generator when we want to create an interactive program that prompts for inputs as it runs, rather than expecting arguments to be passed in at the time of initiation. </p><p>Code-wise, two things are needed to create a useful <code>%ask</code> generator. </p><p>The first is <b><code>sole-result</code></b>, which lives in <code>/sur/sole.hoon</code>. It&#39;s a mold-builder that&#39;s required by any part of Arvo, such as the Dojo, that wants to understand the output of the <code>%ask</code> generator. Because it&#39;s the only type of <code>%ask</code> data that is intelligible to the system, the ultimate output of an <code>%ask</code> generator must be <code>sole-result</code>. You can think of it as a function that takes molds and digests them into a type for the operating system. The simplest way to use <code>sole-result</code> is by calling the <code>produce</code> gate from <code>/lib/generators.hoon</code>. </p><p>The second is <b><code>prompt</code></b>, a gate that lives in <code>lib/generators.hoon</code>. <code>prompt</code> allows you to get information back from the user, which is essential to the typical desired operation of an <code>%ask</code> generator. </p><p>Since this isn&#39;t easy to digest in the abstract, we&#39;ll use an example generator to explain how this kind of generator works. </p><h5 id="-ask-example-"><code>%ask</code> example </h5><p>The code below is an <code>%ask</code> generator that checks if the user inputs “blue” when prompted. Save it as <code>axe.hoon</code> in <code>/gen</code>. </p><pre>/- sole
52−/+ generators
53−=, [sole generators]
54−:- %ask
55−|= *
56−^- (sole-result (cask tang))
57−%+ print leaf+&quot;What is your favorite color?&quot;
58−%+ prompt [%&amp; %prompt &quot;color: &quot;]
59−|= t=tape
60−%+ produce %tang
61−?: =(t &quot;blue&quot;)
62− :~ leaf+&quot;Oh. Thank you very much.&quot;
63− leaf+&quot;Right. Off you go then.&quot;
64− ==
65−:~ leaf+&quot;Aaaaagh!&quot;
66− leaf+&quot;Into the Gorge of Eternal Peril with you!&quot;
67−==
68−</pre><p>Run the generator from the Dojo: </p><pre>&gt; +axe
69−What is your favorite color?
70−: color:
71−</pre><p>Something new happened. Instead of simply returning something, your Dojo&#39;s prompt changed from <code>~your-urbit:dojo&gt;</code> to <code>~your-urbit:dojo: color:</code>, and now expects additional input. Let&#39;s give it an input: </p><pre>: color: red
72−Into the Gorge of Eternal Peril with you!
73−Aaaaagh!
74−</pre><p>Let&#39;s go over what exactly is happening in this code. </p><pre>/- sole
75−/+ generators
76−=, [sole generators]
77−</pre><p>Here we bring in some of the types we are going to need from <code>/sur/sole</code> and gates we will use from <code>/lib/generators</code>. We use some special runes for this. </p><p><code>/-</code> is a Ford rune used to import types from <code>sur</code>. </p><p><code>/+</code> is a Ford rune used to import libraries from <code>lib</code>. </p><p><code>=,</code> is a rune that allows us to expose a namespace. We do this to avoid having to write <code>sole-result:sole</code> instead of <code>sole-result</code> or <code>print:generators</code> instead of <code>print</code>. </p><pre>:- %ask
78−|= *
79−</pre><p>This code might be familiar. Just as with their <code>%say</code> cousins, <code>%ask</code> generators need to produce a <code>cell</code>, the head of which specifies what kind of generator we are running. </p><p>With <code>|= *</code>, we create a gate and ignore the standard arguments we are given, because we&#39;re not using them. </p><pre>^- (sole-result (cask tang))
80−</pre><p><code>%ask</code> generators need to have the second half of the cell be a gate that produces a <code>sole-result</code>, one that in this case contains a <code>cask</code> of <code>tang</code>. We use the <code>^-</code> rune to constrain the generator&#39;s output to such a <code>sole-result</code>. </p><p>A <code>cask</code> is a pair of a <code>mark</code> name and a noun. Recall that a <code>mark</code> can be thought of as an Arvo-level MIME type for data. </p><p>A <code>tang</code> is a <code>list</code> of <code>tank</code>, and a <code>tank</code> is a structure for printing data. There are three types of <code>tank</code>: <code>leaf</code>, <code>palm</code>, and <code>rose</code>. A <code>leaf</code> is for printing a single noun, a <code>rose</code> is for printing rows of data, and a <code>palm</code> is for printing backstep-indented lists. </p><pre>%+ print leaf+&quot;What is your favorite color?&quot;
81−%+ prompt [%&amp; %prompt &quot;color: &quot;]
82−|= t=tape
83−%+ produce %tang
84−</pre><p>Because we imported <code>generators</code>, we can access its contained gates, three of which we use in <code>axe.hoon</code>: <code>print</code>, <code>prompt</code>, and <code>produce</code>. </p><p><b><code>print</code></b> is used for printing a <code>tank</code> to the console. </p><p>In our example, <code>%+</code> is the rune to call a gate, and our gate <code>print</code> takes one argument which is a <code>tank</code> to print. The <code>+</code> here is syntactic sugar for <code>[leaf &quot;What is your favorite color?&quot;]</code> that just makes it easier to write. </p><p><b><code>prompt</code></b> is used to construct a prompt for the user to provide input. It takes a single argument that is a tuple. Most <code>%ask</code> generators will want to use the <code>prompt</code> gate. </p><p>The first element of the <code>prompt</code> sample is a flag that indicates whether what the user typed should be echoed out to them or hidden. <code>%&amp;</code> will produce echoed output and <code>%|</code> will hide the output (for use in passwords or other secret text). </p><p>The second element of the <code>prompt</code> sample is intended to be information for use in creating autocomplete options for the prompt. This functionality is not yet implemented. </p><p>The third element of the <code>prompt</code> sample is the <code>tape</code> that we would like to use to prompt the user. In the case of our example, we use <code>&quot;color: &quot;</code>. </p><p><b><code>produce</code></b> is used to construct the output of the generator. In our example, we produce a <code>tang</code>. </p><pre>|= t=tape
85−</pre><p>Our gate here takes a <code>tape</code> that was produced by <code>prompt</code>. If we needed another type of data we could use <code>parse</code> to obtain it. </p><p>The rest of this generator should be intelligible to those with Hoon knowledge at this point. </p><p>One quirk that you should be aware of, though, is that <code>tang</code> prints in reverse order from how it is created. The reason for this is that <code>tang</code> was originally created to display stack trace information, which should be produced in reverse order. This leads to an annoyance: we either have to specify our messages backwards or construct them in the order we want and then <code>flop</code> the <code>list</code>. This is a <a href="https://github.com/urbit/arvo/issues/840">known issue</a> to be resolved. </p><h3 id="-get-generators-"><code>%get</code> generators </h3><p><code>%get</code> generators are used for making HTTP requests through <code>eyre</code>. For this section we&#39;ll assume knowledge of generators covered in previous sections, so we can jump in with an example: </p><pre>/- sole
86−/+ generators
87−=, generators
88−:- %get
89−|= [* [url=tape ~] ~]
90−^- (sole-request:sole (cask json))
91−%+ curl (scan url auri:de-purl:html)
92−|= hit/httr:eyre
93−?~ r.hit !!
94−=/ my-json (de-json:html q.u.r.hit)
95−?~ my-json !!
96−=, dejs:format
97−%+ produce %json
98−%. %title
99−%~ got by
100−%- (om same)
101−u.my-json
102−</pre><p>The above generator was written with the <a href="https://ghibliapi.herokuapp.com/">Studio Ghibli API</a>. It uses this API to print the title of a Studio Ghibli film. </p><pre>/- sole
103−/+ generators
104−=, generators
105−</pre><p>Here we import types from <code>/sur/sole.hoon</code> and gates from <code>/lib/generators.hoon</code>. We also use <code>=,</code> to expose the namespace of <code>generators</code> that we just imported. </p><pre>:- %get
106−|= [* [url=tape ~] ~]
107−</pre><p>Like with <code>%say</code> and <code>%ask</code> generators, we must include the “boilerplate”: code that produces a generator-specific <code>cell</code>. The head of that cell is <code>%get</code>, and the tail is a gate that takes a <code>tape</code> of the URL that we are trying to access. </p><pre>^- (sole-request:sole (cask json))
108−</pre><p>Here we make sure our gate is producing a <code>sole-request</code> which contains a <code>cask</code> of the type <code>json</code>. </p><pre>%+ curl (scan url auri:de-purl:html)
109−|= hit/httr:eyre
110−</pre><p>Here we can see the call to <code>curl</code>, the sample of which will parse our url and make sure it&#39;s in the proper format. </p><p>The second part of the <code>curl</code> call is the <code>gate</code> that will get called with the result provided by the actual HTTP request. </p><pre>?~ r.hit !!
111−</pre><p>Here we verify that the <code>r</code> face of our response is not null before continuing. If it is null, the generator will crash, as there is nothing left to do. </p><pre>=/ my-json (de-json:html q.u.r.hit)
112−</pre><p>Here we verify that data was returned to us in the <code>json</code> Hoon type. <code>q.u.r.hit</code> is the actual data we care about as a <code>cord</code>. <code>hit</code> is actually an entire response object, including headers, which we don&#39;t care about for this example. <code>de-json</code> out of <code>html</code> will parse the <code>cord</code> and produce a <code>json</code> type for us that we can then use to inspect the data. </p><pre>?~ my-json !!
113−=, dejs:format
114−</pre><p>After parsing the JSON structure we want to make sure we got back a valid <code>json</code> type. To do that, we test for null and crash if that test passes. If it doesn&#39;t pass, we use <code>=,</code> on the <code>dejs:format</code> core so that we can more easily pull arms out of it. </p><pre>%+ produce %json
115−%. %title
116−%~ got by
117−</pre><p>Now we come to our <code>produce</code> call. Recall that <code>produce</code> is used in all the non-naked generators to output the final result. Here we want to produce a <code>cask</code> of <code>json</code>, so we use the mark <code>%json</code> to indicate that. </p><p>Next we have what may be an unfamiliar rune: <code>%.</code>. This rune is simply <code>%-</code> with the argument order reversed. <code>%title</code> is the argument passed to the next gate that is called. <code>by</code> is the core that is the <code>map</code> engine. A Hoon <code>map</code> is a key-value pair structure, sometimes referred to as a dictionary in other languages. <code>got</code> is the arm in <code>by</code> that will produce a gate that we can call to access members of a given <code>map</code>. </p><blockquote><p>The idiomatic way to write Hoon is to have the “heaviest” code paths lowest in the program, which is why <code>%.</code> is preferred in this case over <code>%-</code>. Use of this style is recommended, as it results in code that is much easier to read. </p></blockquote><p>At the moment, however, we do not have a <code>map</code>, but instead have a <code>json</code> type. </p><pre>%- (om same)
118−u.my-json
119−</pre><p>Here we use <code>om</code>, which is an arm in <code>dejs:format</code> that will take a <code>json</code> and return a <code>map</code>. <code>same</code> is a wet gate from the standard library that takes an argument of any type and returns it as that type. We could use any other gate to modify the data if that were useful for the particular data we are going to be processing, but here we want the data exactly as it is. </p><p>Since <code>my-json</code> is a <code>unit</code> of <code>json</code>, the actual data we are looking for is in <code>u.my-json</code>. We take this and give it to the gate produced by the call to <code>om</code>. This gate is going to transform our data by taking in the <code>json</code> structure and producing a <code>map</code>. Then we can look up keys in this map using <code>got</code> from the <code>by</code> core. </p><p><code>%.</code> performs the same function as <code>%-</code>, the rune used to call a function, except with the arguments reversed so that the function is last and the arguments of that function come first. It&#39;s used here to keep with the principle that heaviest, or most complex, expressions should go to the bottom. </p><p>The key we are looking up in our new <code>map</code> we&#39;ve created from <code>my-json</code> is <code>%title</code>, which is an element in the original source, to produce the final result of the generator. </p></div></div></div></div></div><footer class="mb-36"><script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script><script src="/js/main.js"></script></footer></body></html></body></html>
dist/docs/learn/arvo/arvo-internals/hall/index.htmldeleted−708

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/index.htmldeleted−10

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/layout/index.htmldeleted−15

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/messaging/index.htmldeleted−72

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/publishing/index.htmldeleted−47

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/sail/index.htmldeleted−149

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/shell/index.htmldeleted−64

This diff is too big to show here.

dist/docs/learn/arvo/arvo-internals/udon/index.htmldeleted−237

This diff is too big to show here.

dist/docs/learn/arvo/hoon/arms-and-cores/index.htmldeleted−185

This diff is too big to show here.

dist/docs/learn/arvo/hoon/atoms-auras-and-simple-cell-types/index.htmldeleted−424

This diff is too big to show here.

dist/docs/learn/arvo/hoon/cores-again/index.htmldeleted−594

This diff is too big to show here.

dist/docs/learn/arvo/hoon/cores/index.htmldeleted−225

This diff is too big to show here.

dist/docs/learn/arvo/hoon/examples/index.htmldeleted−250

This diff is too big to show here.

dist/docs/learn/arvo/hoon/gates/index.htmldeleted−100

This diff is too big to show here.

dist/docs/learn/arvo/hoon/getting-started/index.htmldeleted−30

This diff is too big to show here.

dist/docs/learn/arvo/hoon/hoon-programs/index.htmldeleted−52

This diff is too big to show here.

dist/docs/learn/arvo/hoon/hoon-syntax/index.htmldeleted−245

This diff is too big to show here.

dist/docs/learn/arvo/hoon/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/hoon/lists/index.htmldeleted−173

This diff is too big to show here.

dist/docs/learn/arvo/hoon/multi-gate-cores-and-doors/index.htmldeleted−229

This diff is too big to show here.

dist/docs/learn/arvo/hoon/nouns/index.htmldeleted−221

This diff is too big to show here.

dist/docs/learn/arvo/hoon/simple-one-gate-programs/index.htmldeleted−416

This diff is too big to show here.

dist/docs/learn/arvo/hoon/structures-and-complex-types/index.htmldeleted−189

This diff is too big to show here.

dist/docs/learn/arvo/hoon/the-subject-and-its-legs/index.htmldeleted−299

This diff is too big to show here.

dist/docs/learn/arvo/hoon/trees-sets-and-maps/index.htmldeleted−159

This diff is too big to show here.

dist/docs/learn/arvo/hoon/type-checking-and-type-inference/index.htmldeleted−316

This diff is too big to show here.

dist/docs/learn/arvo/hoon/type-polymorphism/index.htmldeleted−225

This diff is too big to show here.

dist/docs/learn/arvo/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/nock/definition/index.htmldeleted−48

This diff is too big to show here.

dist/docs/learn/arvo/nock/example/index.htmldeleted−71

This diff is too big to show here.

dist/docs/learn/arvo/nock/explanation/index.htmldeleted−90

This diff is too big to show here.

dist/docs/learn/arvo/nock/implementations/index.htmldeleted−2211

This diff is too big to show here.

dist/docs/learn/arvo/nock/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/style/index.htmldeleted−114

This diff is too big to show here.

dist/docs/learn/arvo/vere/api/index.htmldeleted−200

This diff is too big to show here.

dist/docs/learn/arvo/vere/c/index.htmldeleted−33

This diff is too big to show here.

dist/docs/learn/arvo/vere/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/vere/jetting/index.htmldeleted−155

This diff is too big to show here.

dist/docs/learn/arvo/vere/nouns/index.htmldeleted−80

This diff is too big to show here.

dist/docs/learn/arvo/vere/runtime/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/workbook/bomb/index.htmldeleted−70

This diff is too big to show here.

dist/docs/learn/arvo/workbook/caesar/index.htmldeleted−124

This diff is too big to show here.

dist/docs/learn/arvo/workbook/digits/index.htmldeleted−31

This diff is too big to show here.

dist/docs/learn/arvo/workbook/eightball/index.htmldeleted−61

This diff is too big to show here.

dist/docs/learn/arvo/workbook/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/arvo/workbook/list/index.htmldeleted−27

This diff is too big to show here.

dist/docs/learn/arvo/workbook/recursion/index.htmldeleted−38

This diff is too big to show here.

dist/docs/learn/arvo/workbook/traffic-light/index.htmldeleted−39

This diff is too big to show here.

dist/docs/learn/azimuth/blockchain/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/azimuth/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/azimuth/wallet/index.htmldeleted−1

This diff is too big to show here.

dist/docs/learn/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/alphabetical-arms/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/cheat-sheet/index.htmldeleted−8

This diff is too big to show here.

dist/docs/reference/glossary/index.htmldeleted−79

This diff is too big to show here.

dist/docs/reference/hoon-expressions/advanced/index.htmldeleted−26

This diff is too big to show here.

dist/docs/reference/hoon-expressions/basic/index.htmldeleted−39

This diff is too big to show here.

dist/docs/reference/hoon-expressions/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/hoon-expressions/irregular/index.htmldeleted−17

This diff is too big to show here.

dist/docs/reference/hoon-expressions/limb/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/hoon-expressions/limb/limb/index.htmldeleted−7

This diff is too big to show here.

dist/docs/reference/hoon-expressions/limb/wing/index.htmldeleted−8

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/bar/index.htmldeleted−163

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/bus/index.htmldeleted−100

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/cen/index.htmldeleted−144

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/col/index.htmldeleted−82

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/constants/index.htmldeleted−78

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/dot/index.htmldeleted−82

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/ket/index.htmldeleted−121

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/lus/index.htmldeleted−62

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/mic/index.htmldeleted−118

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/sig/index.htmldeleted−98

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/terminators/index.htmldeleted−41

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/tis/index.htmldeleted−132

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/wut/index.htmldeleted−171

This diff is too big to show here.

dist/docs/reference/hoon-expressions/rune/zap/index.htmldeleted−54

This diff is too big to show here.

dist/docs/reference/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/1a/index.htmldeleted−322

This diff is too big to show here.

dist/docs/reference/library/1b/index.htmldeleted−144

This diff is too big to show here.

dist/docs/reference/library/1c/index.htmldeleted−140

This diff is too big to show here.

dist/docs/reference/library/2a/index.htmldeleted−128

This diff is too big to show here.

dist/docs/reference/library/2b/index.htmldeleted−395

This diff is too big to show here.

dist/docs/reference/library/2c/index.htmldeleted−603

This diff is too big to show here.

dist/docs/reference/library/2d/index.htmldeleted−170

This diff is too big to show here.

dist/docs/reference/library/2e/index.htmldeleted−156

This diff is too big to show here.

dist/docs/reference/library/2f/index.htmldeleted−214

This diff is too big to show here.

dist/docs/reference/library/2g/index.htmldeleted−51

This diff is too big to show here.

dist/docs/reference/library/2h/index.htmldeleted−325

This diff is too big to show here.

dist/docs/reference/library/2i/index.htmldeleted−401

This diff is too big to show here.

dist/docs/reference/library/2j/index.htmldeleted−109

This diff is too big to show here.

dist/docs/reference/library/2k/index.htmldeleted−137

This diff is too big to show here.

dist/docs/reference/library/2l/index.htmldeleted−27

This diff is too big to show here.

dist/docs/reference/library/2m/index.htmldeleted−72

This diff is too big to show here.

dist/docs/reference/library/2n/index.htmldeleted−125

This diff is too big to show here.

dist/docs/reference/library/2o/index.htmldeleted−76

This diff is too big to show here.

dist/docs/reference/library/2p/index.htmldeleted−121

This diff is too big to show here.

dist/docs/reference/library/2q/index.htmldeleted−147

This diff is too big to show here.

dist/docs/reference/library/3a/index.htmldeleted−258

This diff is too big to show here.

dist/docs/reference/library/3b/index.htmldeleted−1432

This diff is too big to show here.

dist/docs/reference/library/3c/index.htmldeleted−214

This diff is too big to show here.

dist/docs/reference/library/3d/index.htmldeleted−410

This diff is too big to show here.

dist/docs/reference/library/3e/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/3f/index.htmldeleted−287

This diff is too big to show here.

dist/docs/reference/library/3g/index.htmldeleted−133

This diff is too big to show here.

dist/docs/reference/library/4a/index.htmldeleted−98

This diff is too big to show here.

dist/docs/reference/library/4b/index.htmldeleted−422

This diff is too big to show here.

dist/docs/reference/library/4c/index.htmldeleted−181

This diff is too big to show here.

dist/docs/reference/library/4d/index.htmldeleted−38

This diff is too big to show here.

dist/docs/reference/library/4e/index.htmldeleted−169

This diff is too big to show here.

dist/docs/reference/library/4f/index.htmldeleted−494

This diff is too big to show here.

dist/docs/reference/library/4g/index.htmldeleted−59

This diff is too big to show here.

dist/docs/reference/library/4h/index.htmldeleted−358

This diff is too big to show here.

dist/docs/reference/library/4i/index.htmldeleted−391

This diff is too big to show here.

dist/docs/reference/library/4j/index.htmldeleted−356

This diff is too big to show here.

dist/docs/reference/library/4k/index.htmldeleted−174

This diff is too big to show here.

dist/docs/reference/library/4l/index.htmldeleted−364

This diff is too big to show here.

dist/docs/reference/library/4m/index.htmldeleted−162

This diff is too big to show here.

dist/docs/reference/library/4n/index.htmldeleted−236

This diff is too big to show here.

dist/docs/reference/library/4o/index.htmldeleted−243

This diff is too big to show here.

dist/docs/reference/library/5a/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/5b/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/5c/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/5d/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/5e/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/5f/index.htmldeleted−19

This diff is too big to show here.

dist/docs/reference/library/5g/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/library/zuse/index.htmldeleted−1

This diff is too big to show here.

dist/docs/reference/troubleshooting/index.htmldeleted−23

This diff is too big to show here.

dist/favicon.icodeleted

Binary file not shown.

dist/images/aegean-1.pngdeleted

Binary file not shown.

dist/images/aegean-2.pngdeleted

Binary file not shown.

dist/images/aegean-3.pngdeleted

Binary file not shown.

dist/images/aegean.svgdeleted−1

This diff is too big to show here.

dist/images/arvo-complete.svgdeleted−1

This diff is too big to show here.

dist/images/arvo-large.svgdeleted−84

This diff is too big to show here.

dist/images/azimuth.svgdeleted−1

This diff is too big to show here.

dist/images/blockchain-fade.svgdeleted−1

This diff is too big to show here.

dist/images/business.svgdeleted−1

This diff is too big to show here.

dist/images/face.svgdeleted−23

This diff is too big to show here.

dist/images/faces.svgdeleted−88

This diff is too big to show here.

dist/images/file.svgdeleted−1

This diff is too big to show here.

dist/images/galaxies-old.svgdeleted−19

This diff is too big to show here.

dist/images/galaxies.svgdeleted−1

This diff is too big to show here.

dist/images/iot.svgdeleted−62

This diff is too big to show here.

dist/images/megacorp.svgdeleted−1

This diff is too big to show here.

dist/images/moons.svgdeleted−73

This diff is too big to show here.

dist/images/network-diagram.gifdeleted

Binary file not shown.

dist/images/network-diagram.svgdeleted

Binary file not shown.

dist/images/new-blockchain.svgdeleted−1

This diff is too big to show here.

dist/images/new-independence.svgdeleted−1

This diff is too big to show here.

dist/images/offchain.svgdeleted−1

This diff is too big to show here.

dist/images/passcode.svgdeleted−1

This diff is too big to show here.

dist/images/personal-blockchain 2.svgdeleted−129

This diff is too big to show here.

dist/images/personal-blockchain.svgdeleted−1

This diff is too big to show here.

dist/images/planets-old.svgdeleted−43

This diff is too big to show here.

dist/images/planets.svg−1

This diff is too big to show here.

dist/images/program.svg−1

This diff is too big to show here.

dist/images/server.svg−1

This diff is too big to show here.

dist/images/single-interface-green.svg−109

This diff is too big to show here.

dist/images/single-interface.svg−111

This diff is too big to show here.

dist/images/standard-code.svg−1

This diff is too big to show here.

dist/images/stars-old.svg−8

This diff is too big to show here.

dist/images/stars.svg−1

This diff is too big to show here.

dist/images/sticker-1.svg−6

This diff is too big to show here.

dist/images/sticker-2.svg−11

This diff is too big to show here.

dist/images/technical-problem.svg−1

This diff is too big to show here.

dist/images/their-code.svg−1

This diff is too big to show here.

dist/images/urbit-complete.svg−1

This diff is too big to show here.

dist/images/what-urbit-is.svg−1

This diff is too big to show here.

dist/index.html−1

This diff is too big to show here.

dist/index/index.html−1

This diff is too big to show here.

dist/introduction/index.html−1

This diff is too big to show here.

dist/js/main.js−13

This diff is too big to show here.

dist/js/main/index.html−14

This diff is too big to show here.

dist/js/primer.js−47

This diff is too big to show here.

dist/js/primer/index.html−48

This diff is too big to show here.

dist/posts/essays/a-founders-farewell/index.html−1

This diff is too big to show here.

dist/posts/essays/an-urbit-overview/index.html−1

This diff is too big to show here.

dist/posts/essays/azimuth-is-on-chain/index.html−1

This diff is too big to show here.

dist/posts/essays/beliefs-and-principles/index.html−1

This diff is too big to show here.

dist/posts/essays/common-objections-to-urbit/index.html−1

This diff is too big to show here.

dist/posts/essays/governance-of-urbit/index.html−1

This diff is too big to show here.

dist/posts/essays/index.html−1

This diff is too big to show here.

dist/posts/essays/interim-constitution/index.html−1

This diff is too big to show here.

dist/posts/essays/magic/index.html−1

This diff is too big to show here.

dist/posts/essays/the-dao-as-a-lesson-in-decentralized-governance/index.html−1

This diff is too big to show here.

dist/posts/essays/the-urbit-address-space/index.html−6

This diff is too big to show here.

dist/posts/essays/toward-a-frozen-operating-system/index.html−1

This diff is too big to show here.

dist/posts/essays/toward-a-new-clay/index.html−23

This diff is too big to show here.

dist/posts/essays/urbit-and-the-blockchain/index.html−1

This diff is too big to show here.

dist/posts/essays/what-is-urbit-for/index.html−1

This diff is too big to show here.

dist/posts/essays/why-urbit-probably-does-not-need-a-blockchain/index.html−1

This diff is too big to show here.

dist/posts/index.html−1

This diff is too big to show here.

dist/posts/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit/index.html−1

This diff is too big to show here.

dist/posts/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web/index.html−1

This diff is too big to show here.

dist/posts/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet/index.html−1

This diff is too big to show here.

dist/posts/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet/index.html−1

This diff is too big to show here.

dist/posts/media/index.html−1

This diff is too big to show here.

dist/posts/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack/index.html−1

This diff is too big to show here.

dist/posts/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system/index.html−1

This diff is too big to show here.

dist/posts/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit/index.html−1

This diff is too big to show here.

dist/posts/media/the-future-of-precision-agriculture-is-decentralized/index.html−1

This diff is too big to show here.

dist/posts/media/urbit-and-the-not-so-dark-future-of-the-internet/index.html−1

This diff is too big to show here.

dist/posts/updates/2016.10.6-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2016.5.16-roadmap/index.html−1

This diff is too big to show here.

dist/posts/updates/2016.7.20-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2016.8.30-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.1.30-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.10.7-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.11.14-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.12.16-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.12.2-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.12.22-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.3.1-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.4.17-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.5.11-roadmap/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.8.11-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.9.20-bootstrapping-urbit-from-ethereum/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.9.23-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2017.9.29-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.1.13-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.1.6-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.10.12-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.10.24-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.11.20-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.11.6-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.12.18-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.2.17-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.2.24-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.2.5-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.2.9-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.3.24-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.3.5-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.4.14-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.4.7-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.5.16-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.5.23-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.5.29-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.5.30-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.6.14-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.6.21-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.6.6-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.7.13-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.7.20-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.7.3-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.7.30-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.8.23-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.8.30-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.8.8-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2018.9.11-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2019.2.11-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2019.2.26-network-update/index.html−1

This diff is too big to show here.

dist/posts/updates/2019.2.4-update/index.html−1

This diff is too big to show here.

dist/posts/updates/index.html−1

This diff is too big to show here.

dist/primer/index.html−1

This diff is too big to show here.

dist/privacy/index.html−1

This diff is too big to show here.

dist/tos/index.html−1

This diff is too big to show here.

dist/web/assets/dropdown.svg−1

This diff is too big to show here.

dist/web/assets/menu-close.svg−7

This diff is too big to show here.

dist/web/assets/menu-open.svg−3

This diff is too big to show here.

dist/web/bounty/index.html−1

This diff is too big to show here.

dist/web/css/base.css−13066

This diff is too big to show here.

dist/web/css/borders.css−15

This diff is too big to show here.

dist/web/css/colors.css−22

This diff is too big to show here.

dist/web/css/flex.css−3

This diff is too big to show here.

dist/web/css/images.css−4

This diff is too big to show here.

dist/web/css/inputs.css−10

This diff is too big to show here.

dist/web/css/lists.css−12

This diff is too big to show here.

dist/web/css/menu.css−50

This diff is too big to show here.

dist/web/css/primer.css−3574

This diff is too big to show here.

dist/web/css/typography.css−106

This diff is too big to show here.

dist/web/css/visibility.css−11

This diff is too big to show here.

dist/web/docs.udon−13

This diff is too big to show here.

dist/web/favicon.ico

This diff is too big to show here.

dist/web/images/aegean-1.png

This diff is too big to show here.

dist/web/images/aegean-2.png

This diff is too big to show here.

dist/web/images/aegean-3.png

This diff is too big to show here.

dist/web/images/aegean.svg−1

This diff is too big to show here.

dist/web/images/arvo-complete.svg−1

This diff is too big to show here.

dist/web/images/arvo-large.svg−84

This diff is too big to show here.

dist/web/images/azimuth.svg−1

This diff is too big to show here.

dist/web/images/blockchain-fade.svg−1

This diff is too big to show here.

dist/web/images/business.svg−1

This diff is too big to show here.

dist/web/images/face.svg−23

This diff is too big to show here.

dist/web/images/faces.svg−88

This diff is too big to show here.

dist/web/images/file.svg−1

This diff is too big to show here.

dist/web/images/galaxies-old.svg−19

This diff is too big to show here.

dist/web/images/galaxies.svg−1

This diff is too big to show here.

dist/web/images/iot.svg−62

This diff is too big to show here.

dist/web/images/megacorp.svg−1

This diff is too big to show here.

dist/web/images/moons.svg−73

This diff is too big to show here.

dist/web/images/network-diagram.gif

This diff is too big to show here.

dist/web/images/network-diagram.svg

This diff is too big to show here.

dist/web/images/new-blockchain.svg−1

This diff is too big to show here.

dist/web/images/new-independence.svg−1

This diff is too big to show here.

dist/web/images/offchain.svg−1

This diff is too big to show here.

dist/web/images/passcode.svg−1

This diff is too big to show here.

dist/web/images/personal-blockchain 2.svg−129

This diff is too big to show here.

dist/web/images/personal-blockchain.svg−1

This diff is too big to show here.

dist/web/images/planets-old.svg−43

This diff is too big to show here.

dist/web/images/planets.svg−1

This diff is too big to show here.

dist/web/images/program.svg−1

This diff is too big to show here.

dist/web/images/server.svg−1

This diff is too big to show here.

dist/web/images/single-interface-green.svg−109

This diff is too big to show here.

dist/web/images/single-interface.svg−111

This diff is too big to show here.

dist/web/images/standard-code.svg−1

This diff is too big to show here.

dist/web/images/stars-old.svg−8

This diff is too big to show here.

dist/web/images/stars.svg−1

This diff is too big to show here.

dist/web/images/sticker-1.svg−6

This diff is too big to show here.

dist/web/images/sticker-2.svg−11

This diff is too big to show here.

dist/web/images/technical-problem.svg−1

This diff is too big to show here.

dist/web/images/their-code.svg−1

This diff is too big to show here.

dist/web/images/urbit-complete.svg−1

This diff is too big to show here.

dist/web/images/what-urbit-is.svg−1

This diff is too big to show here.

dist/web/index.html−1

This diff is too big to show here.

dist/web/index/index.html−1

This diff is too big to show here.

dist/web/introduction/index.html−1

This diff is too big to show here.

dist/web/js/main/index.html−14

This diff is too big to show here.

dist/web/js/primer/index.html−48

This diff is too big to show here.

dist/web/posts/essays/a-founders-farewell/index.html−1

This diff is too big to show here.

dist/web/posts/essays/an-urbit-overview/index.html−1

This diff is too big to show here.

dist/web/posts/essays/azimuth-is-on-chain/index.html−1

This diff is too big to show here.

dist/web/posts/essays/beliefs-and-principles/index.html−1

This diff is too big to show here.

dist/web/posts/essays/common-objections-to-urbit/index.html−1

This diff is too big to show here.

dist/web/posts/essays/governance-of-urbit/index.html−1

This diff is too big to show here.

dist/web/posts/essays/index.html−1

This diff is too big to show here.

dist/web/posts/essays/interim-constitution/index.html−1

This diff is too big to show here.

dist/web/posts/essays/magic/index.html−1

This diff is too big to show here.

dist/web/posts/essays/the-dao-as-a-lesson-in-decentralized-governance/index.html−1

This diff is too big to show here.

dist/web/posts/essays/the-urbit-address-space/index.html−6

This diff is too big to show here.

dist/web/posts/essays/toward-a-frozen-operating-system/index.html−1

This diff is too big to show here.

dist/web/posts/essays/toward-a-new-clay/index.html−23

This diff is too big to show here.

dist/web/posts/essays/urbit-and-the-blockchain/index.html−1

This diff is too big to show here.

dist/web/posts/essays/what-is-urbit-for/index.html−1

This diff is too big to show here.

dist/web/posts/essays/why-urbit-probably-does-not-need-a-blockchain/index.html−1

This diff is too big to show here.

dist/web/posts/index.html−1

This diff is too big to show here.

dist/web/posts/media/blockchannel-episode-19-virtual-land-in-the-clouds-with-urbit/index.html−1

This diff is too big to show here.

dist/web/posts/media/blueprint-2017-galen-wolfe-pauly-on-the-distributed-web/index.html−1

This diff is too big to show here.

dist/web/posts/media/epicenter-episode-205-urbit-a-digital-republic-reinventing-the-internet/index.html−1

This diff is too big to show here.

dist/web/posts/media/governing-the-future-e09-urbit-a-user-owned-internet-on-top-of-the-internet/index.html−1

This diff is too big to show here.

dist/web/posts/media/index.html−1

This diff is too big to show here.

dist/web/posts/media/lambdaconf-2016-curtis-yarvin-urbit-a-clean-slate-functional-operating-stack/index.html−1

This diff is too big to show here.

dist/web/posts/media/lambdaconf-2018-ted-blackman-ford-urbits-build-system/index.html−1

This diff is too big to show here.

dist/web/posts/media/the-ether-review-46-curtis-yarvin-and-galen-wolfe-pauly-on-urbit/index.html−1

This diff is too big to show here.

dist/web/posts/media/the-future-of-precision-agriculture-is-decentralized/index.html−1

This diff is too big to show here.

dist/web/posts/media/urbit-and-the-not-so-dark-future-of-the-internet/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2016.10.6-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2016.5.16-roadmap/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2016.7.20-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2016.8.30-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.1.30-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.10.7-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.11.14-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.12.16-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.12.2-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.12.22-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.3.1-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.4.17-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.5.11-roadmap/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.8.11-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.9.20-bootstrapping-urbit-from-ethereum/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.9.23-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2017.9.29-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.1.13-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.1.6-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.10.12-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.10.24-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.11.20-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.11.6-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.12.18-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.2.17-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.2.24-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.2.5-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.2.9-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.3.24-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.3.5-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.4.14-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.4.7-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.5.16-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.5.23-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.5.29-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.5.30-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.6.14-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.6.21-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.6.6-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.7.13-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.7.20-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.7.3-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.7.30-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.8.23-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.8.30-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.8.8-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2018.9.11-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2019.2.11-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2019.2.26-network-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/2019.2.4-update/index.html−1

This diff is too big to show here.

dist/web/posts/updates/index.html−1

This diff is too big to show here.

dist/web/primer/index.html−1

This diff is too big to show here.

dist/web/privacy/index.html−1

This diff is too big to show here.

dist/web/tos/index.html−1

This diff is too big to show here.