From 846d6e2c1f1467114ceceb403893ebf6c8c0dbb7 Mon Sep 17 00:00:00 2001 From: Guillermo Alejandro Gallardo Diez Date: Wed, 14 Jan 2026 17:29:48 +0100 Subject: [PATCH 1/3] feat: merge all basic tutorials into a single page --- .../tutorials/basic-contracts.md | 299 ++++++++++++++ .../crosswords/01-basics/00-overview.md | 56 --- .../01-basics/01-set-up-skeleton.md | 141 ------- .../01-basics/02-add-functions-call.md | 366 ------------------ .../01-basics/03-hashing-and-unit-tests.md | 264 ------------- .../02-beginner/02-structs-enums.md | 216 ----------- .../crosswords/02-beginner/03-actions.md | 136 ------- .../03-intermediate/02-use-seed-phrase.md | 85 ---- .../crosswords/03-intermediate/03-linkdrop.md | 131 ------- docs/tutorials/examples/coin-flip.md | 135 ------- docs/tutorials/examples/count-near.md | 360 ----------------- docs/tutorials/examples/donation.md | 346 ----------------- docs/tutorials/examples/guest-book.md | 305 --------------- docs/tutorials/welcome.md | 87 ----- website/sidebars.js | 17 +- website/src/components/UI/Card/index.jsx | 1 - .../tutorials/basic-contracts.png | Bin 0 -> 74786 bytes .../docs/tutorials/examples/coin-flip.png | Bin 38066 -> 0 bytes .../examples/count-on-near-banner.png | Bin 11437 -> 0 bytes .../docs/tutorials/examples/count-on-near.png | Bin 35153 -> 0 bytes .../docs/tutorials/examples/donation.png | Bin 40333 -> 0 bytes .../docs/tutorials/examples/guest-book.png | Bin 77516 -> 0 bytes website/static/css/custom.scss | 2 +- 23 files changed, 302 insertions(+), 2645 deletions(-) create mode 100644 docs/smart-contracts/tutorials/basic-contracts.md delete mode 100644 docs/tutorials/crosswords/01-basics/00-overview.md delete mode 100644 docs/tutorials/crosswords/01-basics/01-set-up-skeleton.md delete mode 100644 docs/tutorials/crosswords/01-basics/02-add-functions-call.md delete mode 100644 docs/tutorials/crosswords/01-basics/03-hashing-and-unit-tests.md delete mode 100644 docs/tutorials/crosswords/02-beginner/02-structs-enums.md delete mode 100644 docs/tutorials/crosswords/02-beginner/03-actions.md delete mode 100644 docs/tutorials/crosswords/03-intermediate/02-use-seed-phrase.md delete mode 100644 docs/tutorials/crosswords/03-intermediate/03-linkdrop.md delete mode 100644 docs/tutorials/examples/coin-flip.md delete mode 100644 docs/tutorials/examples/count-near.md delete mode 100644 docs/tutorials/examples/donation.md delete mode 100644 docs/tutorials/examples/guest-book.md delete mode 100644 docs/tutorials/welcome.md create mode 100644 website/static/assets/docs/smart-contracts/tutorials/basic-contracts.png delete mode 100644 website/static/assets/docs/tutorials/examples/coin-flip.png delete mode 100644 website/static/assets/docs/tutorials/examples/count-on-near-banner.png delete mode 100644 website/static/assets/docs/tutorials/examples/count-on-near.png delete mode 100644 website/static/assets/docs/tutorials/examples/donation.png delete mode 100644 website/static/assets/docs/tutorials/examples/guest-book.png diff --git a/docs/smart-contracts/tutorials/basic-contracts.md b/docs/smart-contracts/tutorials/basic-contracts.md new file mode 100644 index 00000000000..547e161b848 --- /dev/null +++ b/docs/smart-contracts/tutorials/basic-contracts.md @@ -0,0 +1,299 @@ +--- +id: basic-contracts +title: Using our Basic Examples +description: "Learn NEAR smart contract basics through practical examples: Counter, Guest Book, Donation, Coin Flip, and Hello World." +--- + +import {CodeTabs, Language, Github} from '@site/src/components/UI/Codetabs'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Card from '@site/src/components/UI/Card'; +import MovingForwardSupportSection from '@site/src/components/MovingForwardSupportSection'; + +We have created a selection of basic smart contracts to help you get started building Smart Contracts on NEAR. + +![img](/assets/docs/smart-contracts/tutorials/basic-contracts.png) + +These examples cover fundamental concepts such as state management, function calls, and token interactions. Each example is designed to be simple and easy to understand, making them perfect for beginners. + +:::tip + +Before tackling these examples, be sure to follow our [Quickstart Guide](../quickstart.md) + +::: + +--- + +## Examples + +
+
+ +

A simple smart contract that stores a `string` message on its state

+
+
+
+ +

A friendly counter that stores a number with methods to increment, decrement, and reset it

+
+
+
+ +

Users can sign the guest book, optionally paying `0.01 Ⓝ` to mark their messages as "premium

+
+
+
+ +

Forward NEAR tokens to a beneficiary while tracking all donations. Learn how contracts handle token transfers

+
+
+
+ +

Guess the outcome of a coin flip and earn points. Demonstrates how to handle randomness on the blockchain

+
+
+
+ +--- + +## Structure of the Examples + +All examples follow a consistent structure, making it easy to navigate between them. Each repository contains the **same smart contract** implemented in **Rust**, **Javascript**, and sometimes **Python**, along with a **simple frontend** to interact with the contract. + +```bash +┌── contract-rs # contract's code in Rust +│ ├── src # contract's code +│ ├── tests # sandbox test +│ ├── Cargo.toml +│ └── rust-toolchain.toml +├── contract-ts # contract's code in Typescript +│ ├── src # contract's code +│ ├── sandbox-test # sandbox test +│ ├── package.json +│ └── tsconfig.json +├── contract-py # contract's code in Python (some examples) +│ ├── contract.py # contract's code +│ ├── tests # sandbox test +│ ├── pyproject.toml +│ └── uv.lock +├── frontend # React + Next.JS frontend +│ ├── src # frontend's implementation +│ ├── public +│ ├── package.json +│ ├── next.config.js +│ └── jsconfig.json +└── README.md +``` + +--- + +## Frontend + +Each example includes a **Next.JS** frontend that is very simple to start: + +```bash +cd frontend +yarn +yarn dev +``` + +These frontends are useful to demonstrate how to connect a web application to NEAR, as well as how to interact with the smart contracts. + +:::tip +Each frontend connects to a **pre-deployed version of the contract**. Check `./frontend/config.js` to see which contract is being used, or change it to your own deployed contract +::: + +
+ +### NEAR Connector Hooks + +All frontends use [`near-connect-hooks`](https://www.npmjs.com/package/near-connect-hooks), which wrap the functionality of [NEAR Connector](../../web3-apps/tutorials/web-login/near-connector.md) to handle the connection between the web app and the NEAR blockchain. + +The `near-connect-hooks` expose a `NearProvider` that is used to wrap the entire application, usually in `pages/_app.js`: + +```jsx +import { NearProvider } from "near-connect-hooks"; + +export default function App({ Component, pageProps }: AppProps) { + return ( + + + + + ); +} +``` + +
+ +We can then use the **`useNearWallet` hook** within any component to access all NEAR-related functionality, such as login/logout, view and call functions, and sign transactions: + +```jsx +import { useNearWallet } from 'near-connect-hooks'; + +export default function App() { + // Login / Logout functionality + const { loading, signIn, signOut, signedAccountId } = useNearWallet(); + + // To interact with the contract + const { viewFunction, callFunction, signAndSendTransactions } = useNearWallet(); +} +``` + +--- + +## Smart Contract + +All repositories include the same smart contract implemented in different languages, including **Rust**, **Javascript**, and sometimes **Python**. + +The contracts are implemented following the latest versions of each SDK, and include sandbox tests showcasing how to properly test smart contracts in a realistic environment. + +
+ +### Testing + +Each contract includes sandbox tests that simulate real user interactions. For example, in the `Guest Book` example, the tests cover scenarios like having multiple accounts signing the guest book, including premium messages. + + + + +```bash +cd contract-ts +yarn +yarn test +``` + + + + +```bash +cd contract-rs +cargo test +``` + + + + +```bash +cd contract-py +uv run pytest +``` + + + + +
+ +### Creating an Account + +All smart contracts can be built and deployed using the `NEAR CLI`. A good first step is to always create a new NEAR account to deploy your contract: + +```bash +near create-account --useFaucet +``` + +:::tip + +Here we are using the `--useFaucet` flag to create a new account and pre-fund it with the [testnet faucet](../../faucet.md) + +::: + +
+ +### Building & Deploying + +Once you created an account to host the contract, you can build and deploy it: + + + + +```bash +cd contract-ts +npm run build +near deploy ./build/.wasm +``` + + + + +```bash +cd contract-rs +cargo near deploy build-non-reproducible-wasm +``` + + + + +```bash +cd contract-py +uvx nearc contract.py +near deploy .wasm +``` + + + + +
+ +### Interacting via CLI + +Once your contract is deployed, check the `README.md` of each repository to see the available methods you can call. + +As a general guide, the `NEAR CLI` has two main ways to interact with smart contracts: + +```bash +# Call a read-only (view) method +near view + +# Call a method that changes state +near call --useAccount + +# Call a method and attach NEAR tokens +near call --useAccount --deposit 1 +``` + +:::tip +Check each repository's README for the specific methods available in that contract. +::: + +--- + +## Moving Forward + +After exploring these basic examples, you can: + +- **Modify the contracts** - Try adding new functionality to deepen your understanding +- **Learn the fundamentals** - Check out [Contract Anatomy](../../smart-contracts/anatomy/anatomy.md) and [Storage](../../smart-contracts/anatomy/storage.md) + + + diff --git a/docs/tutorials/crosswords/01-basics/00-overview.md b/docs/tutorials/crosswords/01-basics/00-overview.md deleted file mode 100644 index 639bac70a00..00000000000 --- a/docs/tutorials/crosswords/01-basics/00-overview.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -id: overview -sidebar_position: 1 -sidebar_label: Crossword Game Overview -title: Basics overview laying out what will be accomplished in this first section. -description: "Learn smart contract basics with an interactive crossword puzzle project using NEAR and Rust." ---- - -import basicCrossword from '/assets/docs/tutorials/crosswords/basics-crossword.jpg'; -import rustScary from '/assets/docs/tutorials/crosswords/rust-scary--ksart.near.png'; -import rustGood from '/assets/docs/tutorials/crosswords/rust-good--ksart.near.png'; - - -This first chapter of the crossword puzzle tutorial will introduce fundamental concepts to smart contract development in a beginner-friendly way. By the end of this chapter you'll have a proof-of-concept contract that can be interacted with via [NEAR CLI](/tools/near-cli) and a simple frontend that uses the [`near-api-js` library](https://www.npmjs.com/package/near-api-js). - -# Basics overview - -## It's not as bad as you think - -Rust is a serious systems programming language. There are pointers, lifetimes, macros, and other things that may look foreign. Don't worry if this is how you feel: - -
- Programmer looking at Rust code and looking worried. Art created by ksart.near -
Art by ksart.near
-
-
- -The good news is the Rust SDK takes care of a lot of the heavy lifting. - -We'll also have the compiler on our side, often telling us exactly what went wrong and offering suggestions. As we go through this tutorial, you'll begin to see patterns that we'll use over and over again. - -So don't worry, writing smart contracts in Rust on NEAR doesn't require a heavy engineering background. - -Programmer looking quite relieved at the Rust code from the NEAR SDK. Art created by ksart.near - -## Assumptions for this first chapter - -- There will be only one crossword puzzle with one solution. -- The user solving the crossword puzzle will not be able to know the solution. -- Only the author of the crossword puzzle smart contract can set the solution. - -## Completed project - -Here's the final code for this chapter: - -https://github.com/near-examples/crossword-tutorial-chapter-1 - -## How it works - -Basic crossword puzzle - -We'll have a rule about how to get the words in the proper order. We collect words in ascending order by number, and if there's and across and a down for a number, the across goes first. - -So in the image above, the solution will be **near nomicon ref finance**. - -Let's begin! diff --git a/docs/tutorials/crosswords/01-basics/01-set-up-skeleton.md b/docs/tutorials/crosswords/01-basics/01-set-up-skeleton.md deleted file mode 100644 index a22047638e7..00000000000 --- a/docs/tutorials/crosswords/01-basics/01-set-up-skeleton.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -sidebar_position: 2 -sidebar_label: Set up Rust and a contract skeleton -title: Set up Rust, get a NEAR testnet account, NEAR CLI, and get a basic smart contract skeleton ready -description: "Set up Rust, NEAR testnet account, and CLI to create a basic smart contract skeleton." ---- -import {Github} from "@site/src/components/UI/Codetabs"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -In this tutorial we'll get a `testnet` account, use [NEAR CLI RS](../../../tools/cli.md) to add a key to our computer's file system, and set up the basic skeleton of a Rust smart contract. - -# Getting started - -## Setting up Rust - -You may have found the [online Rust Book](https://doc.rust-lang.org/stable/book), which is a great resource for getting started with Rust. However, there are key items that are different when it comes to blockchain development. Namely, that smart contracts are [technically libraries and not binaries](https://learning-rust.github.io/docs/cargo-crates-and-basic-project-structure/#crate), but for now just know that we won't be using some commands commonly found in the Rust Book. - -:::caution -We won't be using `cargo run` during smart contract development. -::: - -Instead, we'll be iterating on our smart contract by building it and running tests. - -### Install Rust using `rustup` - -Please see the directions from the [Rustup site](https://rustup.rs/#). For OS X or Unix, you may use: - -```bash -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -``` - -(Taken from the [Rust installation guide](https://www.rust-lang.org/tools/install)) - -### Add Wasm toolchain - -Smart contracts compile to WebAssembly (Wasm) so we'll add the toolchain for Rust. - -```bash -rustup target add wasm32-unknown-unknown -``` - -(More info on [targets and this toolchain here](https://doc.rust-lang.org/edition-guide/rust-2018/platform-and-target-support/webassembly-support.html).) - -## Getting a testnet account - -Visit [NEAR Wallet for testnet](https://testnet.mynearwallet.com/) and register for a free account. For the purposes of this tutorial, you may skip the option to add two-factor authentication if you wish. - -:::note What just happened? -When you created your NEAR `testnet` account, a private key was created and placed into your browser's local storage. You may inspect this using developer tools and see it. -::: - -## Creating a new key on your computer - -We'll want to use a command-line interface (CLI) tool to deploy a contract, but at the moment the private key only exists in the browser. Next we'll _add a new key_ to the testnet account and have this stored locally on our computer as a JSON file. (Yes, you can have multiple keys on your NEAR account, which is quite powerful!) - -Let's install [NEAR CLI RS](../../../tools/cli.md) using `cargo`. You can also download the pre-compiled version of `near-cli-rs` for your OS from [GitHub's Releases page](https://github.com/near/near-cli-rs/releases/). - -```bash -cargo install near-cli-rs -``` - -You may now run: - -```bash -near -``` - -to see various commands, which are covered [in detail here](https://github.com/near/near-cli-rs/blob/main/docs/GUIDE.en.md). - -We'll start by "logging in" with this command: - - - - - ```bash - near login - ``` - - - - - ```bash - near account import-account using-web-wallet network-config testnet - ``` - - - -This will bring you to NEAR Wallet again where you can confirm the creation of a **full-access** key. We'll get to full-access and function-call access keys later, just know that for powerful actions like "deploy" we'll need a full-access key. Follow the instructions from the login command to create a key on your hard drive. This will be located in your operating system's home directory in a folder called `.near-credentials`. - -:::note How was a key added? -When you typed `near login`, NEAR CLI generated a key pair: a private and public key. It kept the private key tucked away in a JSON file and sent the public key as a URL parameter to NEAR Wallet. The URL is long and contains other info instructing NEAR Wallet to "add a full access key" to the account. Our browser's local storage had a key (created when the account was made) that is able to do several things, including adding another key. It took the public key from the URL parameter, used it as an argument, and voilà: the `testnet` account has an additional key! -::: - -You can see the keys associated with your account by running the following command, replacing `friend.testnet` with your account name: - - - - - ```bash - near list-keys friend.testnet - ``` - - - - - ```bash - near account list-keys friend.testnet network-config testnet now - ``` - - - -## Start writing Rust! - -There's a basic repository that's helpful to clone or download [located here](https://github.com/near/boilerplate-template-rs). - -The first thing we'll do is modify the manifest file at `Cargo.toml`: - -```diff -[package] -- name = "rust-template" -+ name = "my-crossword" -version = "0.1.0" -- authors = ["Near Inc "] -+ authors = ["NEAR Friend "] -edition = "2018" -``` - -By changing the `name` here, we'll be changing the compiled Wasm file's name after running the build script. (`build.sh` for OS X and Linux, `build.bat` for Windows.) After running the build script, we can expect to find our compiled Wasm smart contract in `res/my_crossword.wasm`. - -Now let's look at our main file, in `src/lib.rs`: - - - -As you can see, this is a stub that's ready to be filled in. Let's pause and point out a few items: - -- Note the **near** macro is above the struct and the impl -- Here the main struct is called `Contract`, while in other examples it might be `Counter` or something else. This is purely stylistic, but you may learn more from the link in the previous bullet. -- You may notice the word "Borsh" and wonder what that means. This is a binary serializer. Eventually, we'll want to save data as ones and zeroes to validators' hard drives, and do it efficiently. We use Borsh for this, as is explained [on this website](https://borsh.io). - -Next, let's modify this contract little by little… diff --git a/docs/tutorials/crosswords/01-basics/02-add-functions-call.md b/docs/tutorials/crosswords/01-basics/02-add-functions-call.md deleted file mode 100644 index 29f255c542c..00000000000 --- a/docs/tutorials/crosswords/01-basics/02-add-functions-call.md +++ /dev/null @@ -1,366 +0,0 @@ ---- -sidebar_position: 3 -sidebar_label: Add basic code, create a subaccount, and call methods -title: Alter the smart contract, learning about basics of development -description: "Modify the smart contract, create a subaccount, and learn to call methods on NEAR." - ---- -import {Github} from "@site/src/components/UI/Codetabs"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -import teachingDeployment from '/assets/docs/tutorials/crosswords/teaching--jeheycell.near--artcultureac.jpeg'; -import createAccount from '/assets/docs/tutorials/crosswords/creating account with text--seanpineda.near--_seanpineda.png'; -import chalkboardErase from '/assets/docs/tutorials/crosswords/erasing-subaccount-chalkboard--iambon.near--JohnreyBona.mp4'; - -This section will modify the smart contract skeleton from the previous section. This tutorial will start by writing a contract in a somewhat useless way in order to learn the basics. Once we've got a solid understanding, we'll iterate until we have a crossword puzzle. - -## Add a const, a field, and functions - -Let's modify the contract to be: - - - -We've done a few things here: -1. Set a constant for the puzzle number. -2. Added the field `crossword_solution` to our main struct. -3. Implemented three functions: one that's view-only and two that are mutable, meaning they have the ability to change state. -4. Used logging, which required the import of `env` from our `near_sdk` crate. - -Before moving on, let's talk about these changes and how to think about them, beginning with the constant: - -```rust -const PUZZLE_NUMBER: u8 = 1; -``` - -This is an in-memory value, meaning that when the smart contract is spun up and executed in the virtual machine, the value `1` is contained in the contract code. This differs from the next change, where a field is added to the struct containing the `#[near]` macro. The field `crossword_solution` has the type of `String` and, like any other fields added to this struct, the value will live in **persistent storage**. With NEAR, storage is "paid for" via the native NEAR token (Ⓝ). It is not "state rent" but storage staking, paid once, and returned when storage is deleted. This helps incentivize users to keep their state clean, allowing for a more healthy chain. Read more about [storage staking here](/protocol/storage/storage-staking). - -Let's now look at the three new functions: - -```rust -pub fn get_puzzle_number(&self) -> u8 { - PUZZLE_NUMBER -} -``` - -As is covered in the [function section of these docs](../../../smart-contracts/anatomy/functions.md), a "view-only" function will have open parenthesis around `&self` while "change methods" or mutable functions will have `&mut self`. In the function above, the `PUZZLE_NUMBER` is returned. A user may call this method using the proper RPC endpoint without signing any transaction, since it's read-only. Think of it like a GET request, but using RPC endpoints that are [documented here](/api/rpc/contracts#call-a-contract-function). - -Mutable functions, on the other hand, require a signed transaction. The first example is a typical approach where the user supplies a parameter that's assigned to a field: - -```rust -pub fn set_solution(&mut self, solution: String) { - self.crossword_solution = solution; -} -``` - -The next time the smart contract is called, the contract's field `crossword_solution` will have changed. - -The second example is provided for demonstration purposes: - -```rust -pub fn guess_solution(&mut self, solution: String) { - if solution == self.crossword_solution { - env::log_str("You guessed right!") - } else { - env::log_str("Try again.") - } -} -``` - -Notice how we're not saving anything to state and only logging? Why does this need to be mutable? - -Well, logging is ultimately captured inside blocks added to the blockchain. (More accurately, transactions are contained in chunks and chunks are contained in blocks. More info in the [Nomicon spec](https://nomicon.io/Architecture.html?highlight=chunk#blockchain-layer-concepts).) So while it is not changing the data in the fields of the struct, it does cost some amount of gas to log, requiring a signed transaction by an account that pays for this gas. - ---- - -## Building and deploying - -Here's what we'll want to do: - -
- Teacher shows chalkboard with instructions on how to properly deploy a smart contract. 1. Build smart contract. 2. Create a subaccount (or delete and recreate if it exists) 3. Deploy to subaccount. 4. Interact. Art created by jeheycell.near -
Art by jeheycell.near
-
- -### Build the contract - -To build the contract, we'll be using [`cargo-near`](https://github.com/near/cargo-near). - -Install `cargo-near` first: - -```bash -cargo install cargo-near -``` - -Run the following commands and expect to see the compiled Wasm file copied to the `target/near` folder. - -```bash -cd contract -cargo near build -``` - -### Create a subaccount - -If you've followed from the previous section, you have NEAR CLI installed and a full-access key on your machine. While developing, it's a best practice to create a subaccount and deploy the contract to it. This makes it easy to quickly delete and recreate the subaccount, which wipes the state swiftly and starts from scratch. Let's use NEAR CLI to create a subaccount and fund with 1 NEAR: - - - - - ```bash - near create-account crossword.friend.testnet --use-account friend.testnet --initial-balance 1 --network-id testnet - ``` - - - - - ```bash - near account create-account fund-myself crossword.friend.testnet '1 NEAR' autogenerate-new-keypair save-to-keychain sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -If you look again in your home directory's `.near-credentials`, you'll see a new key for the subaccount with its own key pair. This new account is, for all intents and purposes, completely distinct from the account that created it. It might as well be `alice.testnet`, as it has, by default, no special relationship with the parent account. To be clear, `friend.testnet` cannot delete or deploy to `crossword.friend.testnet` unless it's done in a single transaction using Batch Actions, which we'll cover later. - -:::info Subaccount nesting -It's possible to have the account `another.crossword.friend.testnet`, but this account must be created by `crossword.friend.testnet`. - -`friend.testnet` **cannot** create `another.crossword.friend.testnet` because accounts may only create a subaccount that's "one level deeper." - -See this visualization where two keys belonging to `mike.near` are able to create `new.mike.near`. We'll get into concepts around access keys later. - -
- Depiction of create account where two figures put together a subaccount. Art created by seanpineda.near -
Art by seanpineda.near
-
- -::: - -We won't get into top-level accounts or implicit accounts, but you may read more [about that here](/protocol/account-model). - -Now that we have a key pair for our subaccount, we can deploy the contract to `testnet` and interact with it! - -#### What's a codehash? - -We're almost ready to deploy the smart contract to the account, but first let's take a look at the account we're going to deploy to. Remember, this is the subaccount we created earlier. To view the state easily with NEAR CLI, you may run this command: - - - - - ```bash - near state crossword.friend.testnet --networkId testnet - ``` - - - - - ```bash - near account view-account-summary crossword.friend.testnet network-config testnet now - ``` - - - -What you'll see is something like this: - -```bash ------------------------------------------------------------------------------------------- - crossword.friend.testnet At block #167331831 - (Evjnf29LuqFE7FUf97VQZzNfnUgPFLNyyiUk9qr4Wjri) ------------------------------------------------------------------------------------------- - Native account balance 10.01 NEAR ------------------------------------------------------------------------------------------- - Validator stake 0 NEAR ------------------------------------------------------------------------------------------- - Storage used by the account 182 B ------------------------------------------------------------------------------------------- - Contract (SHA-256 checksum hex) No contract code ------------------------------------------------------------------------------------------- - Access keys 1 full access keys and 0 function-call-only access keys ------------------------------------------------------------------------------------------- -``` - -Note the `Contract` SHA-256 checksum is missing. This indicates that there is no contract deployed to this account. - -Let's deploy the contract (to the subaccount we created) and then check this again. - -### Deploy the contract - -Ensure that in your command line application, you're in the directory that contains the `Cargo.toml` file, then run: - -```bash -cargo near deploy build-non-reproducible-wasm crossword.friend.testnet without-init-call network-config testnet sign-with-keychain send -``` - -Congratulations, you've deployed the smart contract! Note that NEAR CLI will output a link to [NEAR Explorer](https://nearblocks.io/) where you can inspect details of the transaction. - -Lastly, let's run this command again and notice that the `Contract` has a SHA-256 checksum. This is the hash of the smart contract deployed to the account. - - - - - ```bash - near state crossword.friend.testnet --networkId testnet - ``` - - - - - ```bash - near account view-account-summary crossword.friend.testnet network-config testnet now - ``` - - - -:::note - -Deploying a contract is often done on the command line. While it may be _technically_ possible to deploy via a frontend, the CLI is likely the best approach. If you're aiming to use a factory model, (where a smart contract deploys contract code to a subaccount) this isn't covered in the tutorial, but you may reference the [contracts in SputnikDAO](https://github.com/near-daos/sputnik-dao-contract). - -::: - -### Call the contract methods (interact!) - -Let's first call the method that's view-only: - - - - - ```bash - near view crossword.friend.testnet get_puzzle_number '{}' --networkId testnet - ``` - - - - - ```bash - near contract call-function as-read-only crossword.friend.testnet get_puzzle_number json-args {} network-config testnet now - ``` - - - -Your command prompt will show the result is `1`. Since this method doesn't take any arguments, we don't pass any. - -Next, we'll add a crossword solution as a string (later we'll do this in a better way) argument: - - - - - ```bash - near call crossword.friend.testnet set_solution '{"solution": "near nomicon ref finance"}' --gas 100000000000000 --accountId friend.testnet - ``` - - - - - ```bash - near contract call-function as-transaction crossword.friend.testnet set_solution json-args '{"solution": "near nomicon ref finance"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -Note that we used NEAR CLI's [`view` command](/tools/near-cli#call), and didn't include an `--accountId` flag. As mentioned earlier, this is because we are not signing a transaction. This second method uses the NEAR CLI [`call` command](/tools/near-cli#call) which does sign a transaction and requires the user to specify a NEAR account that will sign it, using the credentials files we looked at. - -The last method we have will check the argument against what is stored in state and write a log about whether the crossword solution is correct or incorrect. - -Correct: - - - - - ```bash - near call crossword.friend.testnet guess_solution '{"solution": "near nomicon ref finance"}' --gas 100000000000000 --accountId friend.testnet - ``` - - - - - ```bash - near contract call-function as-transaction crossword.friend.testnet guess_solution json-args '{"solution": "near nomicon ref finance"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -You'll see something like this: - -![Command line shows log for successful solution guess](/assets/docs/tutorials/crosswords/cli-guess-solution.png) - -Notice the log we wrote is output as well as a link to NEAR Explorer. - -Incorrect: - - - - - ```bash - near call crossword.friend.testnet guess_solution '{"solution": "wrong answers here"}' --gas 100000000000000 --accountId friend.testnet - ``` - - - - - ```bash - near contract call-function as-transaction crossword.friend.testnet guess_solution json-args '{"solution": "wrong answers here"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -As you can imagine, the above command will show something similar, except the logs will indicate that you've given the wrong solution. - -## Reset the account's contract and state - -We'll be iterating on this smart contract during this tutorial, and in some cases it's best to start fresh with the NEAR subaccount we created. The pattern to follow is to **delete** the account (sending all remaining testnet Ⓝ to a recipient) and then **create the account** again. - - - -
-
Deleting a recreating a subaccount will clear the state and give us a fresh start.
Animation by iambon.near
-
- -Using NEAR CLI, the commands will look like this: - - - - - ```bash - # deleting an account - near delete-account crossword.friend.testnet friend.testnet --networkId testnet - - # creating an account - near create-account crossword.friend.testnet --use-account friend.testnet --initial-balance 1 --network-id testnet - ``` - - - - - ```bash - # deleting an account - near account delete-account crossword.friend.testnet beneficiary friend.testnet network-config testnet sign-with-keychain send - - # creating an account - near account create-account fund-myself crossword.friend.testnet '1 NEAR' autogenerate-new-keypair save-to-keychain sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -The first command deletes `crossword.friend.testnet` and sends the rest of its NEAR to `friend.testnet`. - -## Wrapping up - -So far, we're writing a simplified version of smart contract and approaching the crossword puzzle in a novice way. Remember that blockchain is an open ledger, meaning everyone can see the state of smart contracts and transactions taking place. - -:::info How would you do that? -You may hit an RPC endpoint corresponding to `view_state` and see for yourself. Note: this quick example serves as demonstration purposes, but note that the string being returned is Borsh-serialized and contains more info than just the letters. - -```bash - curl -d '{"jsonrpc": "2.0", "method": "query", "id": "see-state", "params": {"request_type": "view_state", "finality": "final", "account_id": "crossword.friend.testnet", "prefix_base64": ""}}' -H 'Content-Type: application/json' https://rpc.testnet.near.org -``` - -![Screenshot of a terminal screen showing a curl request to an RPC endpoint that returns state of a smart contract](/assets/docs/tutorials/crosswords/rpc-api-view-state.png) - -More on this RPC endpoint in the [NEAR docs](/api/rpc/contracts#view-contract-state). -::: - -In this section, we saved the crossword solution as plain text, which is likely not a great idea if we want to hide the solution to players of this crossword puzzle. Even though we don't have a function called `show_solution` that returns the struct's `crossword_solution` field, the value is stored transparently in state. We won't get into viewing contract state at this moment, but know it's rather easy [and documented here](/api/rpc/contracts#view-contract-state). - -The next section will explore hiding the answer from end users playing the crossword puzzle. diff --git a/docs/tutorials/crosswords/01-basics/03-hashing-and-unit-tests.md b/docs/tutorials/crosswords/01-basics/03-hashing-and-unit-tests.md deleted file mode 100644 index bfabaea2450..00000000000 --- a/docs/tutorials/crosswords/01-basics/03-hashing-and-unit-tests.md +++ /dev/null @@ -1,264 +0,0 @@ ---- -sidebar_position: 4 -sidebar_label: Hash the solution, unit tests, and an init method -title: Introduction to basic hashing and adding unit tests -description: "Hash the crossword solution, add unit tests, and initialize the smart contract securely." ---- -import {Github} from "@site/src/components/UI/Codetabs"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -import batchCookieTray from '/assets/docs/tutorials/crosswords/batch-of-actions--dobulyo.near--w_artsu.jpg'; - -In the previous section, we stored the crossword solution as plain text as a `String` type on the smart contract. If we're trying to hide the solution from the users, this isn't a great approach as it'll be public to anyone looking at the state. Let's instead hash our crossword solution and store that instead. There are different ways to hash data, but let's use `sha256` which is one of the hashing algorithms available in [the Rust SDK](https://docs.rs/near-sdk/latest/near_sdk/env/fn.sha256.html). - -:::info Remind me about hashing -Without getting into much detail, hashing is a "one-way" function that will output a result from a given input. If you have input (in our case, the crossword puzzle solution) you can get a hash, but if you have a hash you cannot get the input. This basic idea is foundational to information theory and security. - -Later on in this tutorial, we'll switch from using `sha256` to using cryptographic key pairs to illustrate additional NEAR concepts. - -Learn more about hashing from [Evgeny Kapun](https://github.com/abacabadabacaba)'s presentation on the subject. You may find other NEAR-related videos from the channel linked in the screenshot below. - -[![Evgeny Kapun presents details on hashing](/assets/docs/tutorials/crosswords/kapun-hashing.png)](https://youtu.be/PfabikgnD08) -::: - -## Helper unit test during rapid iteration - -As mentioned in the first section of this **Basics** chapter, our smart contract is technically a library as defined in the manifest file. For our purposes, a consequence of writing a library in Rust is not having a "main" function that runs. You may find many online tutorials where the command `cargo run` is used during development. We don't have this luxury, but we can use unit tests to interact with our smart contract. This is likely more convenient than building the contract, deploying to a blockchain network, and calling a method. - -We'll add a dependency to the [hex crate](https://crates.io/crates/hex) to make things easier. As you may remember, dependencies live in the manifest file. - - - -Let's write a unit test that acts as a helper during development. This unit test will sha256 hash the input **"near nomicon ref finance"** and print it in a human-readable, hex format. (We'll typically put unit tests at the bottom of the `lib.rs` file.) - - - -:::info What is that `{:?}` thing? -Take a look at different formatting traits that are covered in the [`std` Rust docs](https://doc.rust-lang.org/std/fmt/index.html#formatting-traits) regarding this. This is a `Debug` formatting trait and can prove to be useful during development. -::: - -Run the unit tests with the command: - -``` -cargo test -- --nocapture -``` - -You'll see this output: - -``` -… -running 1 test -Let's debug: "69c2feb084439956193f4c21936025f14a5a5a78979d67ae34762e18a7206a0f" -test tests::debug_get_hash ... ok - -test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s -``` - -This means when you sha256 the input **"near nomicon ref finance"** it produces the hash: -`69c2feb084439956193f4c21936025f14a5a5a78979d67ae34762e18a7206a0f` - -:::tip Note on the test flags -You may also run tests using: - -``` -cargo test -``` - -Note that the test command we ran had additional flags. Those flags told Rust **not to hide the output** from the tests. You can read more about this in [the cargo docs](https://doc.rust-lang.org/cargo/commands/cargo-test.html#display-options). Go ahead and try running the tests using the command above, without the additional flags, and note that we won't see the debug message. -::: - -The unit test above is meant for debugging and quickly running snippets of code. Some may find this a useful technique when getting familiar with Rust and writing smart contracts. Next we'll write a real unit test that applies to this early version of our crossword puzzle contract. - -## Write a regular unit test - -Let's add this unit test (inside the `mod tests {}` block, under our previous unit test) and analyze it: - - - -The first few lines of code will be used commonly when writing unit tests. It uses the `VMContextBuilder` to create some basic context for a transaction, then sets up the testing environment. - -Next, an object is created representing the contract and the `set_solution` function is called. After that, the `guess_solution` function is called twice: first with the incorrect solution and then the correct one. We can check the logs to determine that the function is acting as expected. - -:::info Note on assertions -This unit test uses the [`assert_eq!`](https://doc.rust-lang.org/std/macro.assert_eq.html) macro. Similar macros like [`assert!`](https://doc.rust-lang.org/std/macro.assert.html) and [`assert_ne!`](https://doc.rust-lang.org/std/macro.assert_ne.html) are commonly used in Rust. These are great to use in unit tests. However, these will add unnecessary overhead when added to contract logic, and it's recommended to use the [`require!` macro](https://docs.rs/near-sdk/4.0.0-pre.2/near_sdk/macro.require.html). See more information on this and [other efficiency tips here](../../../smart-contracts/anatomy/reduce-size.md). -::: - -Again, we can run all the unit tests with: - -``` -cargo test -- --nocapture -``` - -:::tip Run only one test -To only run this latest test, use the command: - -``` -cargo test check_guess_solution -- --nocapture -``` - -::: - -## Modifying `set_solution` - -The [overview section](00-overview.md) of this chapter tells us we want to have a single crossword puzzle and the user solving the puzzle should not be able to know the solution. Using a hash addresses this, and we can keep `crossword_solution`'s field type, as `String` will work just fine. The overview also indicates we only want the author of the crossword puzzle to be able to set the solution. As it stands, our function `set_solution` can be called by anyone with a full-access key. It's trivial for someone to create a NEAR account and call this function, changing the solution. Let's fix that. - -Let's have the solution be set once, right after deploying the smart contract. - -Here we'll use the [`#[near]` macro](https://docs.rs/near-sdk/latest/near_sdk/attr.near.html) on a function called `new`, which is a common pattern. - - - -Let's call this method on a fresh contract. - -Go into the directory containing the Rust smart contract and build it: - -```bash -cd contract - -# Build -cargo near build -``` - -Create fresh account if you wish, which is good practice: - - - - - ```bash - # Delete an account - near delete-account crossword.friend.testnet friend.testnet --networkId testnet - - # Create an account again - near create-account crossword.friend.testnet --use-account friend.testnet --initial-balance 1 --network-id testnet - ``` - - - - - ```bash - # Delete an account - near account delete-account crossword.friend.testnet beneficiary friend.testnet network-config testnet sign-with-keychain send - - # Create an account again - near account create-account fund-myself crossword.friend.testnet '1 NEAR' autogenerate-new-keypair save-to-keychain sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -Deploy the contract: - -```bash -cargo near deploy build-non-reproducible-wasm crossword.friend.testnet without-init-call network-config testnet sign-with-keychain send -``` - -Call the "new" method: - - - - - ```bash - near call crossword.friend.testnet new '{"solution": "69c2feb084439956193f4c21936025f14a5a5a78979d67ae34762e18a7206a0f"}' --gas 100000000000000 --accountId crossword.friend.testnet - ``` - - - - - ```bash - near contract call-function as-transaction crossword.friend.testnet new json-args '{"solution": "69c2feb084439956193f4c21936025f14a5a5a78979d67ae34762e18a7206a0f"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' sign-as crossword.friend.testnet network-config testnet sign-with-keychain send - ``` - - - -Now the crossword solution, as a hash, is stored instead. If you try calling the last command again, you'll get the error message, thanks to the `#[init]` macro: -`The contract has already been initialized` - -## First use of Batch Actions - -This is close to what we want, but what if a person deploys their smart contract and **someone else** quickly calls the `new` function before them? We want to make sure the same person who deployed the contract sets the solution, and we can do this using Batch Actions. Besides, why send two transactions when we can do it in one? (Technical details covered in the spec for a [batch transaction here](https://nomicon.io/RuntimeSpec/Transactions.html?highlight=batch#batched-transaction).) - -
- Cookie sheet representing a transaction, where cookies are Deploy and FunctionCall Actions. Art created by dobulyo.near. -
Art by dobulyo.near
-

- -:::info Batch Actions in use -Batch Actions are common in this instance, where we want to deploy and call an initialization function. They're also common when using a factory pattern, where a subaccount is created, a smart contract is deployed to it, a key is added, and a function is called. - -Here's a truncated snippet from a useful (though somewhat advanced) repository with a wealth of useful code: - - -We'll get into Actions later in this tutorial, but in the meantime here's a handy [reference from the spec](https://nomicon.io/RuntimeSpec/Actions.html). -::: - -As you can from the info bubble above, we can batch [Deploy](https://docs.rs/near-sdk/3.1.0/near_sdk/struct.Promise.html#method.deploy_contract) and [FunctionCall](https://docs.rs/near-sdk/3.1.0/near_sdk/struct.Promise.html#method.function_call) Actions. This is exactly what we want to do for our crossword puzzle, and luckily, NEAR CLI has a [flag especially for this](/tools/near-cli#deploy). - -Let's run this again with the handy `--initFunction` and `--initArgs` flags: - -Create fresh account if you wish, which is good practice: - - - - - ```bash - # Delete an account - near delete-account crossword.friend.testnet friend.testnet --networkId testnet - - # Create an account again - near create-account crossword.friend.testnet --use-account friend.testnet --initial-balance 1 --network-id testnet - ``` - - - - - ```bash - # Delete an account - near account delete-account crossword.friend.testnet beneficiary friend.testnet network-config testnet sign-with-keychain send - - # Create an account again - near account create-account fund-myself crossword.friend.testnet '1 NEAR' autogenerate-new-keypair save-to-keychain sign-as friend.testnet network-config testnet sign-with-keychain send - ``` - - - -Deploy the contract and call the initialization method: - -```bash -cargo near deploy build-non-reproducible-wasm crossword.friend.testnet with-init-call new json-args '{"solution": "69c2feb084439956193f4c21936025f14a5a5a78979d67ae34762e18a7206a0f"}' prepaid-gas '100.0 Tgas' attached-deposit '0 NEAR' network-config testnet sign-with-keychain send -``` - -Now that we're using Batch Actions, no one can call this `new` method before us. - -:::note Batch action failures -If one Action in a set of Batch Actions fails, the entire transaction is reverted. This is good to note because sharded, proof-of-stake systems do not work like proof-of-work where a complex transaction with multiple cross-contract calls reverts if one call fails. With NEAR, cross-contract calls use callbacks to ensure expected behavior, but we'll get to that later. -::: - -## Get ready for our frontend - -In the previous section we showed that we could use a `curl` command to view the state of the contract without explicitly having a function that returns a value from state. Now that we've demonstrated that and hashed the solution, let's add a short view-only function `get_solution`. - -In the next section we'll add a simple frontend for our single, hardcoded crossword puzzle. We'll want to easily call a function to get the final solution hash. We can use this opportunity to remove the function `get_puzzle_number` and the constant it returns, as these were use for informative purposes. - -We'll also modify our `guess_solution` to return a boolean value, which will also make things easier for our frontend. - - - -The `get_solution` method can be called with: - - - - - ```bash - near view crossword.friend.testnet get_solution '{}' --networkId testnet - ``` - - - - - ```bash - near contract call-function as-read-only crossword.friend.testnet get_solution json-args {} network-config testnet now - ``` - - - -In the next section we'll add a simple frontend. Following chapters will illustrate more NEAR concepts built on top of this idea. diff --git a/docs/tutorials/crosswords/02-beginner/02-structs-enums.md b/docs/tutorials/crosswords/02-beginner/02-structs-enums.md deleted file mode 100644 index 7e1ec368838..00000000000 --- a/docs/tutorials/crosswords/02-beginner/02-structs-enums.md +++ /dev/null @@ -1,216 +0,0 @@ ---- -sidebar_position: 3 -sidebar_label: Using structs and enums -title: How to think about structs and enums when writing a Rust smart contract on NEAR -description: "Learn how to use structs and enums in Rust smart contracts on NEAR to organize and manage crossword puzzle data effectively." ---- - -import basicCrossword from '/assets/docs/tutorials/crosswords/basics-crossword.jpg'; -import enumBox from '/assets/docs/tutorials/crosswords/enum-a-d-block--eizaconiendo.near--eiza_coniendo.png'; - -In this chapter, we will explore how to use structs and enums in Rust smart contracts on NEAR. Structs are used to model complex data types, while enums help represent discrete states or options. We will see how these concepts can be applied to our crossword puzzle smart contract, allowing us to store and manage puzzle data effectively. - -# Structs and enums - -## Overview - -### Structs - -If you're not familiar with Rust, it may be confusing that there are no classes or inheritance like other programming languages. We'll be exploring how to [use structs](https://doc.rust-lang.org/book/ch05-01-defining-structs.html), which are someone similar to classes, but perhaps simpler. - -Remember that there will be only one struct that gets the [`#[near]` macro](../../../smart-contracts/anatomy/anatomy.md) placed on it; our primary struct or singleton if you wish. Oftentimes the primary struct will contain additional structs that may, in turn, contain more structs in a neat and orderly way. You may also have structs that are used to return data to an end user, like a frontend. We'll be covering both of these cases in this chapter. - -### Enums - -Enums are short for enumerations, and can be particularly useful if you have entities in your smart contract that transition to different states. For example, say you have a series of blockchain games where players can join, battle, and win. There might be an enumeration for `AcceptingPlayers`, `GameInProgress`, and `GameCompleted`. Enums are also used to define discrete types of concept, like months in a year. - -For our crossword puzzle, one example of an enum is the direction of the clue: either across (A) or down (D) as illustrated below. These are the only two options. - -
- Children's toy of a box that has blocks that only fit certain shapes, resembling the letters A and D. Art created by eizaconiendo.near -
Art by eizaconiendo.near
-
-
- -Rust has an interesting feature where enums can contain additional data. You can see [examples of that here](https://doc.rust-lang.org/rust-by-example/custom_types/enum.html). - -## Using structs - -### Storing contract state - -We're going to introduce several structs all at once. These structs are addressing a need from the previous chapter, where the puzzle itself was hardcoded and looked like this: - -Basic crossword puzzle from chapter 1 - -In this chapter, we want the ability to add multiple, custom crossword puzzles. This means we'll be storing information about the clues in the contract state. Think of a grid where there are x and y coordinates for where a clue starts. We'll also want to specify: - -1. Clue number -2. Whether it's **across** or **down** -3. The length, or number of letters in the answer - -Let's dive right in, starting with our primary struct: - -```rust -#[near(contract_state)] -#[derive(PanicOnDefault)] -pub struct Crossword { - puzzles: LookupMap, // ⟵ Puzzle is a struct we're defining - unsolved_puzzles: UnorderedSet, -} -``` - -:::note Let's ignore a couple of things… -For now, let's ignore the macros about the structs that begin with `derive` and `near`. -::: - -Look at the fields inside the `Crossword` struct above, and you'll see a couple types. `String` is a part of Rust's standard library, but `Puzzle` is something we've created: - -```rust -#[near(serializers = [borsh])] -#[derive(Debug)] -pub struct Puzzle { - status: PuzzleStatus, // ⟵ An enum we'll get to soon - /// Use the CoordinatePair assuming the origin is (0, 0) in the top left side of the puzzle. - answer: Vec, // ⟵ Another struct we've defined -} -``` - -Let's focus on the `answer` field here, which is a vector of `Answer`s. (A vector is nothing fancy, just a bunch of items or a "growable array" as described in the [standard Rust documentation](https://doc.rust-lang.org/std/vec/struct.Vec.html). - -```rust -#[near(serializers = [json, borsh])] -#[derive(Debug)] -pub struct Answer { - num: u8, - start: CoordinatePair, // ⟵ Another struct we've defined - direction: AnswerDirection, // ⟵ An enum we'll get to soon - length: u8, - clue: String, -} -``` - -Now let's take a look at the last struct we'e defined, that has cascaded down from fields on our primary struct: the `CoordinatePair`. - -```rust -#[near(serializers = [json, borsh])] -#[derive(Debug)] -pub struct CoordinatePair { - x: u8, - y: u8, -} -``` - -:::info Summary of the structs shown -There are a handful of structs here, and this will be a typical pattern when we use structs to store contract state. - -``` -Crossword ⟵ primary struct with #[near(contract_state)] -└── Puzzle - └── Answer - └── CoordinatePair -``` -::: - -### Returning data - -Since we're going to have multiple crossword puzzles that have their own, unique clues and positions in a grid, we'll want to return puzzle objects to a frontend. - -:::tip Quick note on return values -By default, return values are serialized in JSON unless explicitly directed to use Borsh for binary serialization. - -For example, if we call this function: - -```rust -pub fn return_some_words() -> Vec { - vec!["crossword".to_string(), "puzzle".to_string()] -} -``` - -The return value would be a JSON array: - -`["crossword", "puzzle"]` - -While somewhat advanced, you can learn more about [changing the serialization here](../../../smart-contracts/anatomy/serialization-interface.md). -::: - -We have a struct called `JsonPuzzle` that differs from the `Puzzle` struct we've shown. It has one difference: the addition of the `solution_hash` field. - -```rust -#[near(serializers = [json])] -pub struct JsonPuzzle { - /// The human-readable (not in bytes) hash of the solution - solution_hash: String, // ⟵ this field is not contained in the Puzzle struct - status: PuzzleStatus, - answer: Vec, -} -``` - -This is handy because our primary struct has a key-value pair where the key is the solution hash (as a `String`) and the value is the `Puzzle` struct. - -```rust -pub struct Crossword { - puzzles: LookupMap, - // key ↗ ↖ value - … -``` - -Our `JsonPuzzle` struct returns the information from both the key and the value. - -We can move on from this topic, but suffice it to say, sometimes it's helpful to have structs where the intended use is to return data in a more meaningful way than might exist from the structs used to store contract data. - -### Using returned objects in a callback - -Don't be alarmed if this section feels confusing at this point, but know we'll cover Promises and callbacks later. - -Without getting into detail, a contract may want to make a cross-contract call and "do something" with the return value. Sometimes this return value is an object we're expecting, so we can define a struct with the expected fields to capture the value. In other programming languages this may be referred to as "casting" or "marshaling" the value. - -A real-world example of this might be the [Storage Management standard](https://nomicon.io/Standards/StorageManagement.html), as used in a [fungible token](https://github.com/near-examples/FT). - -Let's say a smart contract wants to determine if `alice.near` is "registered" on the `nDAI` token. More technically, does `alice.near` have a key-value pair for herself in the fungible token contract. - -```rust -#[near(serializers = [json])] -pub struct StorageBalance { - pub total: U128, - pub available: U128, -} - -// … -// Logic that calls the nDAI token contract, asking for alice.near's storage balance. -// … - -#[private] -pub fn my_callback(&mut self, #[callback] storage_balance: StorageBalance) { - // … -} -``` - -The crossword puzzle will eventually use a cross-contract call and callback, so we can look forward to that. For now just know that if your contract expects to receive a return value that's not a primitive (unsigned integer, string, etc.) and is more complex, you may use a struct to give it the proper type. - -## Using enums - -In the section above, we saw two fields in the structs that had an enum type: - -1.`AnswerDirection` — this is the simplest type of enum, and will look familiar from other programming languages. It provides the only two options for how a clue in oriented in a crossword puzzle: across and down. - -```rust -#[near(serializers = [json, borsh])] -#[derive(Debug)] -pub enum AnswerDirection { - Across, - Down, -} -``` - -2. `PuzzleStatus` — this enum can actually store a string inside the `Solved` structure. (Note that we could have simply stored a string instead of having a structure, but a structure might make this easier to read.) - -As we improve our crossword puzzle, the idea is to give the winner of the crossword puzzle (the first person to solve it) the ability to write a memo. (For example: "Took me forever to get clue six!", "Alice rules!" or whatever.) - -```rust -#[near(serializers = [json, borsh])] -#[derive(Debug)] -pub enum PuzzleStatus { - Unsolved, - Solved { memo: String }, -} -``` diff --git a/docs/tutorials/crosswords/02-beginner/03-actions.md b/docs/tutorials/crosswords/02-beginner/03-actions.md deleted file mode 100644 index dd6fbb2153f..00000000000 --- a/docs/tutorials/crosswords/02-beginner/03-actions.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -sidebar_position: 4 -sidebar_label: Actions and sending NEAR -title: There are several Actions an account can do, including sending the winner of the crossword puzzle NEAR using the Transfer Action -description: "Learn how to use the Transfer Action in NEAR smart contracts to send a prize to the first crossword puzzle solver." ---- -import {Github} from "@site/src/components/UI/Codetabs" - -import allActions from '/assets/docs/tutorials/crosswords/crossword-actions.png'; -import transferNEAR from '/assets/docs/tutorials/crosswords/transfer-brand-blue--qiqi04.near--blankworl.png'; -import yoctoNEAR from '/assets/docs/tutorials/crosswords/yoctoNEAR-magnifying--jrbemint.near--JrbeMad.jpg'; -import signerPredecessorCurrent from '/assets/docs/tutorials/crosswords/predecessor-signer-current--yasuoarts.near--YasuoArt69.png'; - - -We're going to introduce a new Action: `Transfer`. In this chapter, we'd like the first person to solve the crossword puzzle to earn some prize money, sent in NEAR. - -# Actions (including sending NEAR) - -
- Two hands exchanging a coin emblazoned with the NEAR Protocol logo. Art created by qiqi04.near -
Art by qiqi04.near
-
-
- -We've already used Actions in the [previous chapter](/tutorials/crosswords/basics/hashing-and-unit-tests#first-use-of-batch-actions), when we deployed and initialized the contract, which used the `DeployContract` and `FunctionCall` Action, respectively. - -The full list of Actions are available at the [NEAR specification site](https://nomicon.io/RuntimeSpec/Actions.html). - -By the end of this entire tutorial we'll have used all the Actions highlighted below: - -All Actions that will be used when the entire crossword puzzle tutorial is complete - -## Actions from within a contract - -When we deployed and initialized the contract, we used NEAR CLI in our Terminal or Command Prompt app. At a high level, this might feel like we're lobbing a transaction into the blockchain, instructing it to do a couple actions. - -It's important to note that you can also execute Actions inside a smart contract, which is what we'll be doing. In the sidebar on the left, you'll see a section called [**Promises**](../../../smart-contracts/anatomy/actions.md), which provides examples of this. Perhaps it's worth mentioning that for the Rust SDK, Promises and Actions are somewhat synonymous. - -:::note Actions only effect the current contract -A contract cannot use the `AddKey` Action on another account, including the account that just called it. It can only add a key to *itself*, if that makes sense. - -The same idea applies for the other actions as well. You cannot deploy a contract to someone else's account, or delete a different account. (Thankfully 😅) - -Similarly, when we use the `Transfer` Action to send the crossword puzzle winner their prize, the amount is being subtracted from the account balance of the account where the crossword contract is deployed. - -The only interesting wrinkle (and what may *seem like* an exception) is when a subaccount is created using the `CreateAccount` Action. During that transaction, you may use Batch Actions to do several things like deploy a contract, transfer NEAR, add a key, call a function, etc. This is common in smart contracts that use a factory pattern, and we'll get to this in future chapters of this tutorial. -::: - -## Define the prize amount - -Let's make it simple and hardcode the prize amount. This is how much NEAR will be given to the first person who solves the crossword puzzle, and will apply to all the crossword puzzles we add. We'll make this amount adjustable in future chapters. - -At the top of the `lib.rs` file we'll add this constant: - - - -As the code comment mentions, this is 5 NEAR, but look at all those zeroes in the code! - -That's the value in yoctoNEAR. This concept is similar to other blockchains. Bitcoin's smallest unit is a satoshi and Ethereum's is a wei. - -
- Depiction of bills of NEAR, coins for partial NEAR, and then a magnifying glass showing a tiny yoctoNEAR next to an ant. Art created by jrbemint.near -
Art by jrbemint.near
-
- -## Adding `Transfer` - -In the last chapter we had a simple function called `guess_solution` that returned `true` if the solution was correct, and `false` otherwise. We'll be replacing that function with `submit_solution` as shown below: - - - -Note the last line in this function, which sends NEAR to the predecessor. - -:::info Returning a Promise -The last line of the function above ends with a semicolon. If the semicolon were removed, that would tell Rust that we'd like to return this Promise object. - -It would be perfectly fine to write the function like this: - -```rust -pub fn submit_solution(&mut self, solution: String, memo: String) -> Promise { - // … - // Transfer the prize money to the winner - Promise::new(env::predecessor_account_id()).transfer(PRIZE_AMOUNT) -} -``` -::: - -## Predecessor, signer, and current account - -When writing a smart contract you'll commonly want to use `env` and the details it provides. We used this in the last chapter for: - -- logging (ex: `env::log_str("hello friend")`) -- hashing using sha256 (ex: `env::sha256(solution.as_bytes())`) - -There are more functions detailed in the [SDK reference docs](https://docs.rs/near-sdk/latest/near_sdk/env/index.html). - -Let's cover three commonly-used functions regarding accounts: predecessor, signer, and current account. - -
- Illustration of Alice sending a transaction to a smart contract named Banana, which does a cross-contract call to the smart contract Cucumber. Art created by yasuoarts.near -
Alice sends a transaction to the contract on banana.near, which does a cross-contract call to cucumber.near.
From the perspective of a contract on cucumber.near, we see a list of the predecessor, signer, and current account.
Art by yasuoarts.near
-


- -1. [predecessor account](https://docs.rs/near-sdk/latest/near_sdk/env/fn.predecessor_account_id.html) — `env::predecessor_account_id()` - - This is the account that was the immediate caller to the smart contract. If this is a simple transaction (no cross-contract calls) from **alice.near** to **banana.near**, the smart contract at **banana.near** considers Alice the predecessor. In this case, Alice would *also* be the signer. - - :::tip When in doubt, use predecessor - As we explore the differences between predecessor and signer, know that it's a more common **best practice to choose the predecessor**. - - Using the predecessor guards against a potentially malicious contract trying to "fool" another contract that only checks the signer. - ::: - -2. [signer account](https://docs.rs/near-sdk/latest/near_sdk/env/fn.signer_account_id.html) — `env::signer_account_id()` - - The signer is the account that originally *signed* the transaction that began the blockchain activity, which may or may not include cross-contract calls. If a function calls results in several cross-contract calls, think of the signer as the account that pushed over the first domino in that chain reaction. - - :::caution Beware of middlemen - If your smart contract is checking the ownership over some assets (fungible token, NFTs, etc.) it's probably a bad idea to use the signer account. - - A confused or malicious contract might act as a middleman and cause unexpected behavior. If **alice.near** accidentally calls **evil.near**, the contract at that account might do a cross-contract call to **vulnerable-nft.near**, instructing it to transfer an NFT. - - If **vulnerable-nft.near** only checks the signer account to determine ownership of the NFT, it might unwittingly give away Alice's property. Checking the predecessor account eliminates this problem. - ::: - -3. [current account](https://docs.rs/near-sdk/latest/near_sdk/env/fn.current_account_id.html) — `env::current_account_id()` - - The current account is "me" from the perspective of a smart contract. - - :::tip Why would I use that? - There might be various reasons to use the current account, but a common use case is checking ownership or handling callbacks to cross-contract calls. - - Many smart contracts will want to implement some sort of permission system. A common, rudimentary permission allows certain functions to only be called by the contract owner, AKA the person who owns a private key to the account for this contract. - - The contract can check that the predecessor and current account are the same, and trust offer more permissions like changing contract settings, upgrading the contract, or other privileged modifications. - ::: diff --git a/docs/tutorials/crosswords/03-intermediate/02-use-seed-phrase.md b/docs/tutorials/crosswords/03-intermediate/02-use-seed-phrase.md deleted file mode 100644 index b367b81e9d5..00000000000 --- a/docs/tutorials/crosswords/03-intermediate/02-use-seed-phrase.md +++ /dev/null @@ -1,85 +0,0 @@ ---- -sidebar_position: 3 -sidebar_label: Seed phrase logic -title: Implementing the seed phrase logic from the necessary libraries -description: "Learn how to use seed phrases in NEAR to generate new accounts and securely derive keys from puzzle solutions." ---- - -In this chapter, we will implement the seed phrase logic necessary for the crossword puzzle. This includes generating a random seed phrase for new accounts and parsing the solution as a seed phrase to derive keys for submitting solutions. We will use the `near-seed-phrase` library to handle these tasks. - -# Seed phrase and key derivation - -There are two separate things we'll want to do: - -1. **Create a random seed phrase** for the user when they visit the crossword puzzle. This will be used if they win and don't have a NEAR account and wish to create one. They can then paste this seed phrase into NEAR Wallet afterward to import their account (which is basically like "logging in" and is currently possible at https://testnet.mynearwallet.com/recover-seed-phrase). -2. **Turn the crossword solution into a key pair**, instead of just hashing it. - -## near-seed-phrase library - -We can add the `near-seed-phrase` package to our project with: - -```bash -npm install near-seed-phrase --save -``` - -:::note Code snippets for this chapter -At this point in the tutorial, it's more difficult to share code snippets that are both meaningful and meant to be copy/pasted into a project. - -The snippets provided might differ slightly from the implementation of the [completed code for chapter 3](https://github.com/near-examples/crossword-tutorial-chapter-3), which might be the best place to look for the functioning code. -::: - -## Generate random seed phrase for new account creation (if the winner doesn't already have an account) - -```js -import { generateSeedPhrase } from 'near-seed-phrase'; - -// Create a random key in here -let seedPhrase = generateSeedPhrase(); // generateSeedPhrase() returns an object {seedPhrase, publicKey, secretKey} -localStorage.setItem('playerKeyPair', JSON.stringify(seedPhrase)); -``` - -## Parse solution as seed phrase - -(This security measure prevents front-running.) - -```js -import { parseSeedPhrase } from 'near-seed-phrase'; -// Get the seed phrase from the completed puzzle. -// The original puzzle creator would have already called this same function with the same inputs and would have -// already called `AddKey` on this contract to add the key related to this seed phrase. Here, using this deterministic -// function, the front-end will automatically generate that same key based on the inputs from the winner. -const seedPhrase = parseSolutionSeedPhrase(data, gridData); // returns a string of space-separated words -// Get the public and private key derived from the seed phrase -const {secretKey, publicKey} = parseSeedPhrase(seedPhrase); - -// Set up the account and connection, acting on behalf of the crossword account -const keyStore = new nearAPI.keyStores.InMemoryKeyStore(); // Another type of key -const keyPair = nearAPI.utils.key_pair.KeyPair.fromString(secretKey); -await keyStore.setKey(nearConfig.networkId, nearConfig.contractName, keyPair); -nearConfig.keyStore = keyStore; -const near = await nearAPI.connect(nearConfig); -const crosswordAccount = await near.account(nearConfig.contractName); - -// Call the submit_solution method using the discovered function-call access key -let transaction = await crosswordAccount.functionCall(…); -``` - -The last line should look familiar. We did something similar in the last chapter, except we used the `WalletConnection`'s account to do the function call. - -This time we're using an `InMemoryKeyStore` instead of the browser, as you can see toward the middle of the snippet. - -### Key stores - -We have now used almost all the key stores available in `near-api-js`: - -1. `UnencryptedFileSystemKeyStore` — early on, when we used the NEAR CLI command `near login`, this created a file in our operating system's home directory containing a private, full-access key to our account. -2. `BrowserLocalStorageKeyStore` — in the last chapter, when the user first logs in, the function-call access key is saved in the browser's local storage. -3. `InMemoryKeyStore` — for this chapter, we'll simply use the computer's memory to store the private key derived from the crossword solution. - -:::tip You can have multiple key stores -Technically, there's another type of key store called the `MergeKeyStore`. - -Say you want to look for private keys in various directories. You can essentially have a list of `UnencryptedFileSystemKeyStore` key stores that look in different places. - -Use the `MergeKeyStore` when you might want to look for a private key in more than one place. -::: diff --git a/docs/tutorials/crosswords/03-intermediate/03-linkdrop.md b/docs/tutorials/crosswords/03-intermediate/03-linkdrop.md deleted file mode 100644 index d7036921540..00000000000 --- a/docs/tutorials/crosswords/03-intermediate/03-linkdrop.md +++ /dev/null @@ -1,131 +0,0 @@ ---- -sidebar_position: 4 -sidebar_label: Linkdrop contract -title: Introducing the linkdrop contract we can use -description: "Learn how the linkdrop contract enables creating new NEAR accounts through cross-contract calls." ---- -import {Github} from "@site/src/components/UI/Codetabs"; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; - -import createMainnetAccount from '/assets/docs/tutorials/crosswords/create-mainnet-account.png'; -import createTestnetAccount from '/assets/docs/tutorials/crosswords/create-testnet-wallet-account.png'; - -We're going to take a small detour to talk about the linkdrop smart contract. It's best that we first understand this contract and its purpose, then discuss calling a method on this contract. - -# The linkdrop contract - -[The linkdrop contract](https://github.com/near/near-linkdrop) is deployed to the accounts `testnet` and `near`, which are known as the top-level accounts of the testnet and mainnet network, respectively. (Anyone can create a linkdrop-style contract elsewhere, but the one shown here is the main one that others are patterned off of.) - -## Testnet - -There’s nothing special about testnet accounts; there is no real-world cost to you as a developer when creating testnet accounts, so feel free to create or delete at your convenience. - -When a user signs up for a testnet account on NEAR Wallet, they'll see this: - - - -Let's discuss how this testnet account gets created. - -Notice the new account will end in `.testnet`. This is because the account `testnet` will create a subaccount (like we learned about [earlier in this tutorial](../01-basics/02-add-functions-call.md#create-a-subaccount)) called `vacant-name.testnet`. - -There are two ways to create this subaccount: - -1. Use a full-access key for the account `testnet` to sign a transaction with the `CreateAccount` Action. -2. In a smart contract deployed to the `testnet` account, call the `CreateAccount` Action, which is an async method that returns a Promise. (More info about writing a [`CreateAccount` Promise](../../../smart-contracts/anatomy/actions.md#create-a-sub-account)) - -(In the example below that uses NEAR CLI to create a new account, it's calling `CreateAccount` on the linkdrop contract that is deployed to the top level "near" account on mainnet.) - - -## Mainnet - -On mainnet, the account `near` also has the linkdrop contract deployed to it. - -Using NEAR CLI, a person can create a `mainnet` account by calling the linkdrop contract, like shown below: - - - - - ```bash - near call near create_account '{"new_account_id": "aloha.near", "new_public_key": "3cQ...tAT"}' --gas 300000000000000 --deposit 15 --accountId mike.near --networkId mainnet - ``` - - - - - ```bash - near contract call-function as-transaction near create_account json-args '{"new_account_id": "aloha.near", "new_public_key": "3cQ...tAT"}' prepaid-gas '300.0 Tgas' attached-deposit '15 NEAR' sign-as mike.near network-config mainnet sign-with-keychain - ``` - - - -The above command calls the `create_account` method on the account `near`, and would create `aloha.near` **if it's available**, funding it with 15 Ⓝ. - -We'll want to write a smart contract that calls that same method. However, things get interesting because it's possible `aloha.near` is already taken, so we'll need to learn how to handle that. - -## A simple callback - -### The `create_account` method - -Here, we'll show the implementation of the `create_account` method. Note the `#[payable]` macro, which allows this function to accept an attached deposit. (Remember in the CLI command we were attaching 15 Ⓝ.) - - - -The most important part of the snippet above is around the middle where there's: - -```rust -Promise::new(...) - ... - .then( - Self::ext(env::current_account_id()) - .on_account_created(...) - ) -``` - -This translates to, "we're going to attempt to perform an Action, and when we're done, please call myself at the method `on_account_created` so we can see how that went." - -:::caution This doesn't work - -Not infrequently, developers will attempt to do this in a smart contract: - -```rust -let creation_result = Promise::new("aloha.mike.near") - .create_account(); - -// Check creation_result variable (can't do it!) -if creation_result {...} - -``` - -In other programming languages promises might work like this, but we must use callbacks instead. -::: - -### The callback - -Now let's look at the callback: - - - -This calls the private helper method `is_promise_success`, which basically checks to see that there was only one promise result, because we only attempted one Promise: - - - -Note that the callback returns a boolean. This means when we modify our crossword puzzle to call the linkdrop contract on `testnet`, we'll be able to determine if the account creation succeeded or failed. - -And that's it! Now we've seen a method and a callback in action for a simple contract. - -:::tip This is important -Understanding cross-contract calls and callbacks is quite important in smart contract development. - -Since NEAR's transactions are asynchronous, the use of callbacks may be a new paradigm shift for smart contract developers from other ecosystems. - -Feel free to dig into the linkdrop contract and play with the ideas presented in this section. - -There are two additional examples that are helpful to look at: -1. [High-level cross-contract calls](https://github.com/near/near-sdk-rs/blob/master/examples/cross-contract-calls/high-level/src/lib.rs) — this is similar what we've seen in the linkdrop contract. -2. [Low-level cross-contract calls](https://github.com/near/near-sdk-rs/blob/master/examples/cross-contract-calls/low-level/src/lib.rs) — a different approach where you don't use the traits we mentioned. -::: - ---- - -Next we'll modify the crossword puzzle contract to check for the signer's public key, which is how we now determine if they solved the puzzle correctly. diff --git a/docs/tutorials/examples/coin-flip.md b/docs/tutorials/examples/coin-flip.md deleted file mode 100644 index 47db44fe429..00000000000 --- a/docs/tutorials/examples/coin-flip.md +++ /dev/null @@ -1,135 +0,0 @@ ---- -id: coin-flip -title: Coin Flip -description: "Learn to handle randomness on NEAR." ---- -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import {CodeTabs, Language, Github} from "@site/src/components/UI/Codetabs" - -This example demonstrates a simple coin flip game on the NEAR blockchain, where players can guess the outcome of a coin flip and earn points. It includes both the smart contract and the frontend components. - -![img](/assets/docs/tutorials/examples/coin-flip.png) - ---- - -## Starting the Game -Coin Flip is a game where the player tries to guess the outcome of a coin flip. It is one of the simplest contracts implementing random numbers. - -You have two options to start the example: -1. **Recommended:** use the app through Gitpod (a web-based interactive environment) -2. Clone the project locally. - -| Gitpod | Clone locally | -| ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- | -| Open in Gitpod | `https://github.com/near-examples/coin-flip-examples.git` | - - -If you choose Gitpod, a new browser window will open automatically with the code. Give it a minute, and the front-end will pop up (ensure the pop-up window is not blocked). - -If you are running the app locally, you should build and deploy a contract (JavaScript or Rust version) and a client manually. - ---- - -## Interacting With the Counter -Go ahead and log in with your NEAR account. If you don't have one, you can create one on the fly. Once logged in, use the `tails` and `heads` buttons to try to guess the next coin flip outcome. - -![img](/assets/docs/tutorials/examples/coin-flip.png) -*Frontend of the Game* - ---- - -## Structure of a dApp - -Now that you understand what the dApp does, let us take a closer look to its structure: - -1. The frontend code lives in the `/frontend` folder. -2. The smart contract code in Rust is in the `/contract-rs` folder. -3. The smart contract code in JavaScript is in the `/contract-ts` folder. - -:::note -Both Rust and JavaScript versions of the contract implement the same functionality. -::: - -### Contract -The contract presents 2 methods: `flip_coin`, and `points_of`. - - - - - - - - - - -### Running the Frontend - -To start the frontend you will need to install the dependencies and start the server. - -```bash -cd frontend -yarn -yarn dev -``` - -
- -### Understanding the Frontend - -The frontend is a [Next.JS](https://nextjs.org/) project generated by [create-near-app](https://github.com/near/create-near-app). Check `_app.js` and `index.js` to understand how components are displayed and interacting with the contract. - - - - - - ---- - -## Testing - -When writing smart contracts, it is very important to test all methods exhaustively. In this -project you have integration tests. Before digging into them, go ahead and perform the tests present in the dApp through the command `yarn test` for the JavaScript version, or `./test.sh` for the Rust version. - -### Integration test - -Integration tests can be written in both Rust and JavaScript. They automatically deploy a new -contract and execute methods on it. In this way, integration tests simulate interactions -from users in a realistic scenario. You will find the integration tests for the `coin-flip` -in `contract-ts/sandbox-ts` (for the JavaScript contract) and `contract-rs/tests` (for the Rust contract). - - - - - - - - - - ---- - -## A Note On Randomness - -Randomness in the blockchain is a complex subject. We recommend you to read and investigate about it. -You can start with our [security page on it](../../smart-contracts/security/random.md). - -:::note Versioning for this article - -At the time of this writing, this example works with the following versions: - -- near-cli: `4.0.13` -- node: `18.19.1` -- rustc: `1.77.0` - -::: diff --git a/docs/tutorials/examples/count-near.md b/docs/tutorials/examples/count-near.md deleted file mode 100644 index 872591fc518..00000000000 --- a/docs/tutorials/examples/count-near.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -id: count-near -title: Count on NEAR -description: "A simple counter on NEAR Protocol." ---- - -import {CodeTabs, Language, Github} from '@site/src/components/UI/Codetabs'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import MovingForwardSupportSection from '@site/src/components/MovingForwardSupportSection'; - -Our counter example is a friendly decentralized app that stores a number and exposes methods to `increment`,`decrement`, and `reset` it. - -![img](/assets/docs/tutorials/examples/count-on-near-banner.png) - ---- - -## Obtaining the Counter Example - -You have two options to start the Counter Example. - -1. You can use the app through `GitHub Codespaces`, which will open a web-based interactive environment. -2. Clone the repository locally and use it from your computer. - -| Codespaces | Clone locally | -| ---------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | -| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/near-examples/counters) | 🌐 `https://github.com/near-examples/counters` | - ---- - -## Structure of the Example - -The example is divided in two main components: - -1. The smart contract, available in three flavors: Rust, JavaScript, and Python -2. The frontend, that interacts with an already deployed contract. - - - - - -```bash -┌── sandbox-ts # sandbox testing -│ ├── src -│ │ └── main.ava.ts -│ ├── ava.config.cjs -│ └── package.json -├── src # contract's code -│ └── contract.ts -├── package.json # package manager -├── README.md -└── tsconfig.json # test script -``` - - - - - -```bash -┌── src # contract's code -│ └── lib.rs -├── tests # sandbox test -│ └── test_basics.rs -├── Cargo.toml # package manager -├── README.md -└── rust-toolchain.toml -``` - - - - - -```bash -├── tests # contract tests -│ └── test_contract.py -├── contract.py # contract's code -├── contract.wasm # compiled contract -├── pyproject.toml # package manager -├── README.md -└── uv.lock -``` - - - - - ---- - -## Frontend - -The counter example includes a frontend interface designed to interact seamlessly with an existing smart contract that has been deployed. This interface allows users to increase or decrease the counter as needed. - -
- -### Running the Frontend - -To start the frontend you will need to install the dependencies and start the server. - -```bash -cd frontend -yarn -yarn dev -``` - -Go ahead and login with your NEAR account. If you don't have one, you will be able to create one in the moment. Once logged in, use the `+` and `-` buttons to increase and decrease the counter. Then, use the Gameboy buttons to reset it and make the counter blink an eye! - -![img](/assets/docs/tutorials/examples/count-on-near.png) -_Frontend of the Counter_ - -
- -### Understanding the Frontend - -The frontend is a [Next.JS](https://nextjs.org/) project generated by [create-near-app](https://github.com/near/create-near-app). Check `_app.js` and `index.js` to understand how components are displayed and interacting with the contract. - - - - - - ---- - -## Smart Contract - -The contract presents 4 methods: `get_num`, `increment`, `decrement`, and `reset`. The method `get_num` retrieves the current value, and the rest modify it. - - - - - - - - - - - - - ---- - -### Testing the Contract - -The contract readily includes a set of unit and sandbox testing to validate its functionality. To execute the tests, run the following commands: - - - - -```bash -cd contract-ts -yarn -yarn test -``` - - - - - ```bash - cd contract-rs - cargo test - ``` - - - - - - ```bash - cd contract-py - uv run pytest - ``` - - - - - -:::tip -The `integration tests` use a sandbox to create NEAR users and simulate interactions with the contract. -::: - -
- -### Deploying the Contract to the NEAR network - -In order to deploy the contract you will need to create a NEAR account. - - - - - ```bash - # Create a new account pre-funded by a faucet - near create-account --useFaucet - ``` - - - - - ```bash - # Create a new account pre-funded by a faucet - near account create-account sponsor-by-faucet-service .testnet autogenerate-new-keypair save-to-keychain network-config testnet create - ``` - - - -Go into the directory containing the smart contract (`cd contract-ts`, `cd contract-rs`, or `cd contract-py`), build and deploy it: - - - - - - ```bash - npm run build - near deploy ./build/counter.wasm - ``` - - - - - ```bash - cargo near deploy build-non-reproducible-wasm - ``` - - - - - - ```bash - uvx nearc contract.py - near deploy contract.wasm - near call initialize '{}' --accountId - ``` - - - - - -:::tip -To interact with your contract from the [frontend](#frontend), simply replace the value of the `testnet` key in the `config.js` file. -::: - - -
- -### CLI: Interacting with the Contract - -To interact with the contract through the console, you can use the following commands. - -#### Get the current number of the counter - - - - - ```bash - near view counter.near-examples.testnet get_num - ``` - - - - - ```bash - near contract call-function as-read-only counter.near-examples.testnet get_num json-args {} network-config testnet now - ``` - - - -
- -#### Increment the counter - - - - - ```bash - # Replace with your account ID - near call counter.near-examples.testnet increment --accountId - ``` - - - - - ```bash - # Replace with your account ID - near contract call-function as-transaction counter.near-examples.testnet increment json-args {} prepaid-gas '30.0 Tgas' attached-deposit '0 NEAR' sign-as aha_6.testnet network-config testnet sign-with-keychain send - ``` - - - -
- -#### Decrement the counter - - - - - ```bash - # Replace with your account ID - near call counter.near-examples.testnet decrement --accountId - ``` - - - - - ```bash - # Replace with your account ID - near contract call-function as-transaction counter.near-examples.testnet decrement json-args {} prepaid-gas '30.0 Tgas' attached-deposit '0 NEAR' sign-as aha_6.testnet network-config testnet sign-with-keychain send - ``` - - - -
- -#### Reset the counter to zero - - - - - ```bash - # Replace with your account ID - near call counter.near-examples.testnet reset --accountId - ``` - - - - - ```bash - # Replace with your account ID - near contract call-function as-transaction counter.near-examples.testnet reset json-args {} prepaid-gas '30.0 Tgas' attached-deposit '0 NEAR' sign-as aha_6.testnet network-config testnet sign-with-keychain send - ``` - - - -:::tip -If you're using your own account, replace `counter.near-examples.testnet` with your `accountId`. -::: - ---- - -## Moving Forward - -A nice way to learn is by trying to expand the contract. Modify it by adding a parameter to `increment` and `decrement`, -so the user can choose by how much to change the value. For this, you will need to use knowledge from the [anatomy](../../smart-contracts/anatomy/anatomy.md) -and [storage](../../smart-contracts/anatomy/storage.md) sections. - - - -:::note Versioning for this article - -At the time of this writing, this example works with the following versions: - -- near-cli: `4.0.13` -- node: `18.19.1` -- rustc: `1.77.0` - -::: diff --git a/docs/tutorials/examples/donation.md b/docs/tutorials/examples/donation.md deleted file mode 100644 index 26c89711aef..00000000000 --- a/docs/tutorials/examples/donation.md +++ /dev/null @@ -1,346 +0,0 @@ ---- -id: donation -title: Donation -description: "Learn to build a donation smart contract that accepts NEAR tokens, tracks donations, and distributes funds to beneficiaries." ---- - -import {CodeTabs, Language, Github} from '@site/src/components/UI/Codetabs'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import MovingForwardSupportSection from '@site/src/components/MovingForwardSupportSection'; - -Our donation example enables to forward NEAR Tokens to an account while keeping track of it. It is one of the simplest examples on making a contract handle transfers. - -![img](/assets/docs/tutorials/examples/donation.png) -_Frontend of the Donation App_ - ---- - -## Obtaining the Donation Example - -You have two options to start the Donation Example. - -1. You can use the app through `Github Codespaces`, which will open a web-based interactive environment. -2. Clone the repository locally and use it from your computer. - -| Codespaces | Clone locally | -| ------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------- | -| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/near-examples/donation-examples) | 🌐 `https://github.com/near-examples/donation-examples.git` | - ---- - -## Structure of the Example - -The example is divided in two main components: - -1. The smart contract, available in two flavors: rust and javascript -2. The frontend, that interacts with an already deployed contract. - - - - - -```bash -┌── sandbox-ts # sandbox testing -│ ├── src -│ │ └── main.ava.ts -│ ├── ava.config.cjs -│ └── package.json -├── src # contract's code -│ ├── contract.ts -│ ├── model.ts -│ └── utils.ts -├── package.json # package manager -├── README.md -└── tsconfig.json # test script -``` - - - - - -```bash -┌── tests # workspaces testing -│ ├── workspaces.rs -├── src # contract's code -│ ├── donation.rs -│ └── lib.rs -├── Cargo.toml # package manager -├── README.md -└── rust-toolchain.toml -``` - - - - - ---- - -## Frontend - -The donation example includes a frontend that interacts with an already deployed smart contract, allowing user to donate NEAR tokens to a faucet service. - -
- -### Running the Frontend - -To start the frontend you will need to install the dependencies and start the server. - -```bash -cd frontend -yarn -yarn dev -``` - -Go ahead and login with your NEAR account. If you don't have one, you will be able to create one in the moment. Once logged in, input the amount of NEAR you want to donate and press the donate button. You will be redirected to the NEAR Wallet to confirm the transaction. After confirming it, the donation will be listed in the "Latest Donations". - -
- -### Understanding the Frontend - -The frontend is a [Next.JS](https://nextjs.org/) project generated by [create-near-app](https://github.com/near/create-near-app). Check `DonationsTable.jsx` and `DonationsForm.jsx` to understand how components are displayed and interacting with the contract. - - - - - - -An interesting aspect of the donation example is that it showcases how to retrieve a result after being redirected to the -NEAR wallet to accept a transaction. - ---- - -## Smart Contract - -The contract exposes methods to donate tokens (`donate`), and methods to retrieve the recorded donations (e.g. `get_donation_for_account`). - - - - - - - - - - -
- -### Testing the Contract - -The contract readily includes a set of unit and sandbox testing to validate its functionality. To execute the tests, run the following commands: - - - - - ```bash - cd contract-ts - yarn - yarn test - ``` - - - - - ```bash - cd contract-rs - cargo test - ``` - - - - - -:::tip -The `integration tests` use a sandbox to create NEAR users and simulate interactions with the contract. -::: - -
- -### Deploying the Contract to the NEAR network - -In order to deploy the contract you will need to create a NEAR account. - - - - - ```bash - # Create a new account pre-funded by a faucet - near create-account --useFaucet - ``` - - - - - ```bash - # Create a new account pre-funded by a faucet - near account create-account sponsor-by-faucet-service .testnet autogenerate-new-keypair save-to-keychain network-config testnet create - ``` - - - -Go into the directory containing the smart contract (`cd contract-ts` or `cd contract-rs`), build and deploy it: - - - - - - ```bash - npm run build - near deploy ./build/donation.wasm - ``` - - - - - ```bash - cargo near deploy build-non-reproducible-wasm - ``` - - - - - -:::tip -To interact with your contract from the [frontend](#frontend), simply replace the variable `CONTRACT_NAME` in the `index.js` file. -::: - -
- -### CLI: Interacting with the Contract - -To interact with the contract through the console, you can use the following commands - -#### Get donations - - - - - ```bash - near view donation.near-examples.testnet get_donations '{"from_index": "0","limit": "10"}' - ``` - - - - - ```bash - near contract call-function as-read-only donation.near-examples.testnet get_donations json-args '{"from_index": "0","limit": "10"}' network-config testnet now - ``` - - - -
- -#### Get beneficiary - - - - - ```bash - near view donation.near-examples.testnet get_beneficiary - ``` - - - - - ```bash - near contract call-function as-read-only donation.near-examples.testnet get_beneficiary json-args {} network-config testnet now - ``` - - - -
- -#### Get number of donors - - - - - ```bash - near view donation.near-examples.testnet number_of_donors - ``` - - - - - ```bash - near contract call-function as-read-only donation.near-examples.testnet number_of_donors json-args {} network-config testnet now - ``` - - - -
- -#### Get donation for an account - - - - - ```bash - # Require accountId - near view donation.near-examples.testnet get_donation_for_account '{"account_id":}' - ``` - - - - - ```bash - # Require accountId - near contract call-function as-read-only donation.near-examples.testnet get_donation_for_account json-args '{"account_id":}' network-config testnet now - ``` - - - -
- -#### Donate to the contract - - - - - ```bash - # Replace with your account ID - # Require deposit - near call donation.near-examples.testnet donate --accountId --deposit 0.1 - ``` - - - - - ```bash - # Replace with your account ID - # Require deposit - near contract call-function as-transaction donation.near-examples.testnet donate json-args {} prepaid-gas '30.0 Tgas' attached-deposit '0.1 NEAR' sign-as network-config testnet sign-with-keychain send - ``` - - - -
- -:::tip -If you're using your own account, replace `donation.near-examples.testnet` with your `accountId`. -::: - ---- - -## Moving Forward - -A nice way to learn is by trying to expand a contract. Modify the donation example so it accumulates the tokens in the contract -instead of sending it immediately. Then, make a method that only the `beneficiary` can call to retrieve the tokens. - - - -:::note Versioning for this article - -At the time of this writing, this example works with the following versions: - -- near-cli: `4.0.13` -- node: `18.19.1` -- rustc: `1.77.0` - -::: diff --git a/docs/tutorials/examples/guest-book.md b/docs/tutorials/examples/guest-book.md deleted file mode 100644 index 1280a797502..00000000000 --- a/docs/tutorials/examples/guest-book.md +++ /dev/null @@ -1,305 +0,0 @@ ---- -id: guest-book -title: Guest Book -description: "Create a NEAR Guest Book smart contract to store user messages, attach NEAR tokens, and integrate with a frontend, including premium messages and testing instructions" ---- - -import {CodeTabs, Language, Github} from '@site/src/components/UI/Codetabs'; -import Tabs from '@theme/Tabs'; -import TabItem from '@theme/TabItem'; -import MovingForwardSupportSection from '@site/src/components/MovingForwardSupportSection'; - -This example demonstrates how to create a simple guest book application on the NEAR blockchain, allowing users to sign messages and optionally attach a small amount of NEAR as a tip. It includes both the smart contract and the frontend components. - -Our Guest Book example is a simple app composed by two main components: - -1. A smart contract that stores messages from users, allowing to attach money to them. -2. A simple web-based frontend that displays the last 10 messages posted. - -![img](/assets/docs/tutorials/examples/guest-book.png) - ---- - -## Obtaining the Guest book Example - -You have two options to start the Guest book Example. - -1. You can use the app through `GitHub Codespaces`, which will open a web-based interactive environment. -2. Clone the repository locally and use it from your computer. - -| Codespaces | Clone locally | -|-----------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------| -| [![Open in GitHub Codespaces](https://github.com/codespaces/badge.svg)](https://codespaces.new/near-examples/guest-book-examples) | 🌐 `https://github.com/near-examples/guest-book-examples` | - ---- - -## Structure of the Example - -The example is divided in two main components: - -1. The smart contract, available in two flavors: Rust and JavaScript -2. The frontend, that interacts with an already deployed contract. - - - - - -```bash -┌── sandbox-ts # sandbox testing -│ ├── src -│ │ └── main.ava.ts -│ ├── ava.config.cjs -│ └── package.json -├── src # contract's code -│ ├── contract.ts -│ └── model.ts -├── package.json # package manager -├── README.md -└── tsconfig.json # test script -``` - - - - - -```bash -┌── tests # workspaces testing -│ ├── workspaces.rs -├── src # contract's code -│ └── lib.rs -├── Cargo.toml # package manager -├── README.md -└── rust-toolchain.toml -``` - - - - - ---- - -## Frontend - -The guest book example includes a frontend that interacts with an already deployed smart contract, allowing user to sign a message. - -
- -### Running the Frontend - -To start the frontend you will need to install the dependencies and start the server. - -```bash -cd frontend -yarn -yarn dev -``` - -Go ahead and login with your NEAR account. If you don't have one, you will be able to create one in the moment. Once logged in, you will be able to sign a message in the guest book. You can further send some money alongside your message. If you attach more than 0.01Ⓝ then your message will be marked as "premium". - -
- -### Understanding the Frontend - -The frontend is a [Next.JS](https://nextjs.org/) project generated by [create-near-app](https://github.com/near/create-near-app). Check `_app.js` and `index.js` to understand how components are displayed and interacting with the contract. - - - - - - ---- - -## Smart Contract - -The contract presents 3 methods: `add_message`, `get_message` and `total_messages`. - - - - - - - - - - - -
- -### Testing the Contract - -The contract readily includes a set of unit and sandbox testing to validate its functionality. To execute the tests, run the following commands: - - - - -```bash -cd contract-ts -yarn -yarn test -``` - - - - - ```bash - cd contract-rs - cargo test - ``` - - - - - -:::tip -The `integration tests` use a sandbox to create NEAR users and simulate interactions with the contract. -::: - -
- -### Deploying the Contract to the NEAR network - -In order to deploy the contract you will need to create a NEAR account. - - - - - ```bash - # Create a new account pre-funded by a faucet - near create-account --useFaucet - ``` - - - - - ```bash - # Create a new account pre-funded by a faucet - near account create-account sponsor-by-faucet-service .testnet autogenerate-new-keypair save-to-keychain network-config testnet create - ``` - - - -Go into the directory containing the smart contract (`cd contract-ts` or `cd contract-rs`), build and deploy it: - - - - - - ```bash - npm run build - near deploy ./build/guest_book.wasm - ``` - - - - - ```bash - cargo near deploy build-non-reproducible-wasm - ``` - - - - - -:::tip -To interact with your contract from the [frontend](#frontend), simply replace the variable `CONTRACT_NAME` in the `index.js` file. -::: - -
- -### CLI: Interacting with the Contract - -To interact with the contract through the console, you can use the following commands. - -#### Get messages - - - - - ```bash - near view guestbook.near-examples.testnet get_messages '{"from_index": "0","limit": "10"}' - ``` - - - - - ```bash - near contract call-function as-read-only guestbook.near-examples.testnet get_messages json-args '{"from_index": "0","limit": "10"}' network-config testnet now - ``` - - - -
- -#### Get total number of messages - - - - - ```bash - near view guestbook.near-examples.testnet total_messages - ``` - - - - - ```bash - near contract call-function as-read-only guestbook.near-examples.testnet total_messages json-args {} network-config testnet now - ``` - - - -
- -#### Add a message - - - - - ```bash - # Replace with your account ID - # Required a text - # Optional deposit to make the message premium - near call guestbook.near-examples.testnet add_message '{"text":"Hello Near"}' --accountId --deposit 0.1 - ``` - - - - - ```bash - # Replace with your account ID - # Required a text - # Optional deposit to make the message premium - near contract call-function as-transaction guestbook.near-examples.testnet add_message json-args '{"text":"Hello Near"}' prepaid-gas '30.0 Tgas' attached-deposit '0.1 NEAR' sign-as network-config testnet sign-with-keychain send - ``` - - - -
- -:::tip -If you're using your own account, replace `guestbook.near-examples.testnet` with your `accountId`. -::: - ---- - -## Moving Forward - -A nice way to learn is by trying to expand a contract. You can modify the guestbook example to incorporate a feature where users can give likes to messages. Additionally, implement a method to toggle the like. - - - -:::note Versioning for this article - -At the time of this writing, this example works with the following versions: - -- near-cli: `4.0.13` -- node: `18.19.1` -- rustc: `1.77.0` - -::: diff --git a/docs/tutorials/welcome.md b/docs/tutorials/welcome.md deleted file mode 100644 index 07c53ab2204..00000000000 --- a/docs/tutorials/welcome.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -id: welcome -hide_table_of_contents: true -title: Smart Contract Tutorials -description: "Learn about smart contracts." ---- -import Card from '@site/src/components/UI/Card'; - -Whether you're a seasoned developer looking to refine your skills or a complete beginner taking your first step into the decentralized world, you've come to the right place. Our comprehensive collection of smart contract tutorials is designed to guide you from core concepts to advanced implementations, providing the hands-on knowledge you need to build, deploy, and audit secure and efficient contracts on the NEAR blockchain. - ---- - -
- -
-
- } - title="Beginner" - description="Take your first steps and learn the basics of NEAR smart contracts." - > - - -
-
- } - title="Advanced" - description="Learn more about NEAR smart contracts with advanced tutorials." - > - - -
-
- } - title="Cross Contracts" - description="Learn how to perform cross-contract calls on NEAR." - > - - -
-
- } - title="Factories" - description="Learn how to deploy multiple contracts using a factory contract." - > - - -
-
- } - title="Zero to Hero" - description="Learn how to build a full FT or NFT contract from scratch, one step at a time." - > - - -
-
- - -
diff --git a/website/sidebars.js b/website/sidebars.js index d8803b2b1bb..d0e2a2532c7 100644 --- a/website/sidebars.js +++ b/website/sidebars.js @@ -317,23 +317,10 @@ const sidebar = { ] }, { - type: 'category', - label: 'Tutorials', - link: { - type: 'doc', - id: 'tutorials/welcome', - }, - items: [ - { - "Beginner": [ - 'tutorials/examples/count-near', - 'tutorials/examples/guest-book', - 'tutorials/examples/coin-flip', - ] - }, + "Tutorials": [ + 'smart-contracts/tutorials/basic-contracts', { "Advanced": [ - 'tutorials/examples/donation', 'tutorials/examples/near-drop', 'tutorials/examples/update-contract-migrate-state', ] diff --git a/website/src/components/UI/Card/index.jsx b/website/src/components/UI/Card/index.jsx index 7901a9c9c24..710c619ee7e 100644 --- a/website/src/components/UI/Card/index.jsx +++ b/website/src/components/UI/Card/index.jsx @@ -12,7 +12,6 @@ const Card = ({ variant = 'default', // 'default', 'icon', 'image' color = 'default', // 'default', 'mint', 'purple', 'orange' className = '', - links, ...props }) => { // Determine if card should be clickable diff --git a/website/static/assets/docs/smart-contracts/tutorials/basic-contracts.png b/website/static/assets/docs/smart-contracts/tutorials/basic-contracts.png new file mode 100644 index 0000000000000000000000000000000000000000..5d92f85887d0df1c1d6152dd1c38a2ae3787212c GIT binary patch literal 74786 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%0DcN$B&SRP}BU5N;v-;lyYAAMr7ik%m`h|H#%q^ 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 YtYOw=t~7QlA;3QxDmqV#lq}!>AJidBiU0rr literal 0 HcmV?d00001 diff --git a/website/static/assets/docs/tutorials/examples/coin-flip.png b/website/static/assets/docs/tutorials/examples/coin-flip.png deleted file mode 100644 index 00b997276b55f554930756b2a22ab9023a0005d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38066 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

1&dFyvXpXh^Nc_&V4cS-%F&%;QHd(2D}0= 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 Z5cW5mTt=grBLi!296fUEa8pQ1$$uAD8x;Tm diff --git a/website/static/assets/docs/tutorials/examples/count-on-near-banner.png b/website/static/assets/docs/tutorials/examples/count-on-near-banner.png deleted file mode 100644 index b81ba064bd72e0ec7453463778a3c2869d7158a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11437 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

F1{d< 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 V(uN*ON=iT;@O1TaS?83{1OU{o3+w;@ diff --git a/website/static/assets/docs/tutorials/examples/guest-book.png b/website/static/assets/docs/tutorials/examples/guest-book.png deleted file mode 100644 index 191b79b9a5e23807cab33a392dd1b57ede34b97d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77516 zcmYhj1yodD)HghIcf(Mkf`D{)2?$7uNOwth!w^zZA_~$VAl;oqcXv0^-7(C2`9JUT zz290FW_f2E?m1`Qv-dCdjZjsV!@;D)1c5*}@8xCGK_FxS5D1|k9ThlZ^e^Hk@Pgqe zuk8Z74}bnaxcpWb0i2|8eW&I6(ZRyi!`RszH@Ju~Sa|-~!Tjln_KRc zL{$5MuM$ppV{7}$Mw=q>`045Q@_bzS{MlZTKLmnbo7Y&F?p@SWxWZ-}CA&EYI!4Px zl*C8=-$TaQ80{3*l!wxeZU^;$PXg~2M1DYZw*P;hLylX>H}4-okPIhD-`S)T8}HJ^ z+hc^8gkHw`bB3t!g?5Ec6yZSduTN@J^VdX z>yZ8GKBLb!wYb)3FwjElNKb0w;+?8^fSCvZMx8iPA9q@QPmENY zUw&;o#L}UYRX>NW$?_?BcVcnRTZ%nkm>y+Lu1O?Fh zi6T7o_i4N)*x6teeJTQJwXRbtUt_ceoBFqu`qc5q_f#DHrN&onO^Ch|AeX|fdRa1l6vAIjGKb!0uzHHs zUK#F>LYU`P`C|(-;G63&-@k$($Jzfkj(+ZsIq`WM&B{p?zWy1NJw;*Ib-2gVj}md3y}nO zT!oBzwA)-nh!s!-($PkpRGGF^nTd}fqIqyGY@+K~^rmIpqG?PH?B5BG);yH?8ifJ( zq80PD<@2^i6#wa zZsgc&TA|Yp8nfaVv#M4t_(}f@XRwkZNy(9#x~&Or4t$s8O&?V0b+A-cfI_bIEbh^- zFB}3f!RJkK!?=$w1Cs%dy1QUXX zEl@_0oExyMYZjWsf)P4F3b};9!Ii{%yiLSHg*@rNm$GiAUAFT%S6w<=O)ky8`jnIM zlbm|Y(aPlgN;o5@g7n|Pe* zl4_<<^F?AbVpD4+py9Q43uXl<^+;r?N@xEHM4*f31m+z#k0{TkaD2&3!q}Me{G2OG zgL%yiAuk?fu(DkEuw3`hvC^VknGrNgr^}WoT{J6MqArztn(_11)GkcGL9F%ZUrNGL zxeZ9%dP`p9{8ailP=}-SVH9!(gZrOezR%3e#CK@E#&mXZK>#V|5skKRP(9q7gq2mb zaW5wjdhASIl^t07`->U)-Mu0vC9T!HmW!e34#pEbRL-uf#Ki8*%*jFKX8Ro@{N(K; z?=I?jivRRm42KSw>iPNk-N`2Y5iuVTR9x~kcVaKX_i2^$wsVbk zRHUq0;b~3oS&fadr;6&mG1Q#SUFfMEE5uP0qLd2eDcp=dlvRY%Scz?5vEp~cG1S7S zP0NAF$&?^qou$-_jR&2Q?QRCPoy{!v<5J>-;~3AdknZ>+%aKo3GAqfu#@MVL-UXyQ5hZC(0Dp{F1Z(z)mm<$+>ws_@q9o zg0CI|1|tW~dA5E&6pU~SqcUzl_#`xcm;+QQ*n-x#MW?*x(?_9B_RSm`WBA)O4W^01DtOv-wP8>jn?_f7*mf8Y8!JqIhRa3+U}fq1IGQw?~0 zj`+YEm^z#??fg2Hu%Z=C_>RYmFqH14l{vbmglg{@?9x0y!m9&cD*C!Iy zqMzUU$@|C!Sv6T)@0FN-DOmARs22PJ29RG=6g+PxWopVW!o!nkxSHNK+#fn`jn;ea zC?p6>VE_VBc0VXrD&z+)_4oKRtfo%fkUQ*{=`X65eP=F?==)a>GyMVP+RYcoP!88! z{L8~}hDxc^@R?74JGLnmkPZ!wi8`uX!a4)Z2NTgATblnMHo2el%y0IheJFa>9_}QR zHdpOMbX^NWkIDM#wCsd3R}N_1oOo7~rHJ{z>> zt1)yc8?ts;zmHnB?>&ORsI0B6n=R0noiB##pBimCM?Uk|RN$Z@wcg)TX?&ht3)#sC zks_$aP&Py3O|3@0!TH7o)B1p+lIM2*MqDDoxzT^%054d6AJQ1#_bSeW^}y=e1%(rcj7p-?q;{g7me$+=*C0Jxsy|j@^Vya4DB$rCk?9xn+#z3TX=z)3e6Q0+ zms9?^`C zwU#ymIz|p`MkW8j!_U7tzmpy|Z5^3|+&r=4C1&K`@g+bSqrq;`eQIh7b%bKnbp20v zg(3&K$Vu}0`DNAUMpp!p@har@lwj$m4M{SMO5&8u)}C)IOOB>H;jM0`viK+TJX~#7 zi{HZ*zm@(bK!(c~rBf)j672&p|7aFv0f%}4aw1br$AyT$b}hCdM4MFYzF$_}uX=e8 zn5jJb7Eknlwto7Q4oEg2sF) zV{>z$qG`lXKfN&ZW2LrMI8rW8hKs#_TUg0WbnDLR&Jg4e&Rfvn7vS zCRg)%=)riE9NtaX`=;fXk9h+X=7XAt%XOn=AJsm8j)gxwK|D_bAEZkSWwQxJp&Y`Q z!3Cd3(|-$`>A9Y);9!OjGODC?^+czXyX+`Cf_F$}j5yZPATX?xmIvI*%1S8(@tK@$ z4Q&KLBsAQ%Y&`L$Ybw0oL$424At3RQl-Q4X%6H2bup4;iJF<~*2ZPPPOi_l60usfp znG%)3ds_4i9Ayf5B`64}i5aD#KL=Ckbm;%9DH|?$M=#cNmC02LrgkUu@OUU+3Cv(L z1&0{)W;Oof+27ySQC5lTTz3TWN{5M)AUipSm96d9$#of65^8{D=D1Z{T$Z%4WZc7n zVt(G6XT49jNvzEn zW`T!eV`JeTQuyvdhDS%`^!3volILxE_IYhMH-q-*^Y*^LD@jfX6_fxA%G z_jX*)UpeMoWa3(S(+TGNyVZF1*3?M9hnole&jlLwH|b4I{X>zk>*)IHWSeq(n70UQ z$b}1 zywd}<$HwK}qyaQdz>AP|P>Lc9pW+v8+Qmu&UP+X`o*QXrmS>_RQQbA&z0~2TLCdCu~dOZW@b4# zUkVQEVEdS@jGtfHft7ZGbX69{ofpcOHMdSohFfTJg|1JQ(ra!5@9j^%w@*+tjhDVb z5e`XrzlcZChLjKJ-jL#))gCRXtyiUH8$w%u^L!y(fxwZ<4zS4B2wfdLw>uqZ2~I>F ze#FHEQaRM)0-J3|C=OMNzm2V}jJ`g#kozH%XPIRqFE6iFy;Yo{5O(KUKO;?VH<>;Y zd6-T~&(Hq&tZ}Q;HR)K-w=HX4G%TM>J4hhSOMaCDj~V_wwRVe3mJ0#KW7$3)dXVLs zpxWn5s8#LhG`K}M8KXV{RBrchl3!RD)Nl4x>9w4_JzJyO!8eSZ)ZjPq zjM>s*gk|-bW!k|c&{E{VN+6~$BYp0^kqCI5zii`R>KpA9^;q2|dp*a6uCjB7mxo==V>iv68pzsPv z;%1j!74rk`6U4u(n4=f@B_-X!wN+RQ>!gafVe;~pe)KxOxKPtsAlU4Q=>}qLtU@|0 zpmzatkIb2_0vwhBF$g$XgrKcD4>=zMcx`;e_$}n7Fcj++b@_Wv;x1pr3nV_|MQZw2 zFVJNKu2?;fEx3$sBJ~o>)tWi>&;Ats<)Jw0Ju3p5GVusp)s{XXP>Xc|uJt!%*Ym|V zZDey^<&zeE**$xxKhu8 za#zOviTTTB9+O-E+LW1o|CS`{&j+zI%n_0JYGMIRRY@mBhyYnQYW zy4eR4?gUYKVkm;K{;G7M(faOgE6ul9;xRKbtLf|?IfnDm0#G4aHs;dB5hP*$>5~Ln zm}R4|`>~9hTeRWt3e(=T4hk~l4;jYfQ8c2IM2zW?=7Y`ry317_?8!K&TigGFjL8od zYN&uM;T)6O`;tk|gZpzAINP>1if_SSKG?T#6PgWjEx*#)QzPHkyYSaZin2X2hfn;xV1 zv9D}~-#VVoUc{xC_2@uY&(jC)O%ViNpuh0{51v+LQ74h2KRRCt&L4hfudzG zT9on9k+`n3`$h&r01){M#J)?vHqD%|R?{`a0zhnNC=(qL0eG|oR&bUr$at{<-yIqiqY^~fg-5TZVdFT%Q^Y0bzC z-|ckDW@o02AFfwh{No3=e>;u{G9AqkwD{cgWJ!lDeW8q&E!Kt7e16*d_I&~`Okz;g z7i}kSuKG*WszlO`m)^xr5iH>X{a2)VR@*AA7dij3Bhr$gt8S2)rMcHvJO{zRQ*$_u zSxR!U<0=xK$<6Wd5$>&5dT)A*kJIe(jmb6E=-pdbL1}3Z0OX>i!|>3WSGl2AS67}7 zX&yis;WRkR-+g71x<)4?KlM5ug9@^^<+0p?7mX$|y19dbb@opeF5}|j(sY%v<7K$QtMwLT+tsRkKXrESw0t zKY!-J#s25dpKHGo4P_)HC7bR*3y>#RY1r)(RuTvQL6!CgD{IHJnfUn6h`9=$7SYSr zvYknjszo(@18-4BUCI|(Rhd4iGEdv}2j3Jqh>T`8WTBF}aC5oN_YJ+doak|4EhZ)U z$z0>1CxTYgjol!Hk*khV)Q#RWygyRcZ5yBykC4PFtN7QXoL-^+8c&uP_w{@6y;vEj zmW3>V3>Q$5NOqy8@3d8bwMGztR}O3dCuff5uayfM@uiGUO<_lN2Ss61AG%Xrde8b} zGXGkrdH)(uV^*Un^@X?SkOj;B!9GA1>~gt+kaoE)$E<30S6ay0kfJ}}041ezo@n6* z*{Z6l@fKbF!?}h@zi0q$00@j+#Ee78V}B~ff5peN0hE&N%!-yW{Ew!(3DsJ{W^E>r zYVH1<+P1vWY12W#TQDiT`;y(1N8*P`2XwO)pI&Yrbjh}7CIht970VvUNy@J{@skPlQAYvLJI*3THz zr9Q^rD8&IJQ1kgjM^2H$|a@2R!-kI?7_gYoAE>S7oB(iBf+Pddrh=nXM zCf$#CYM=eU;NC!EGbX0vpbNGZr0!f%1W?{!>>4CPG+J%PAhhCRsq3n)p$jG)wu^xc z=0w>XZK8BpZNPh-ZL>GiabggrSK3ucyUO9>`*HPkU z!!2h)8qYN`k*C{urm}oTLw<5>Pk>wTJc#E19+%~|O#9OQ#`O$jv*B^L6hYvvYFD0k{tA(r1Sk?3vBY!<=1}tpA4L z7#^(&y!^N_*bc?3xfz08mPJWL_^v>2gERq_m*0sKL>~I zP<}zdJ1?(>4Cz1B)x>bma}3wRx%Pub0OJ>xL63LHflvZcX-7tBJ!1E}cLMH@0#6qi z@C_^Nq|f#H`_|3Cp6hwnJ%4Ot-W#(%IVyJHvodYX%a-bd@LDAuIaexTmCvpRPy7iz zxP6Vpe*90jfWy9qQnF`h?{r&A)XePc=DHj_CYkaiR}-K;Z+pelJJ#CAand_qye_-a z%(Gd;2O|6GkKkOx7Yrfyy)cAMMqt@ZZ)VK3>Rj18(|dovhaiIv7ap-@-ljzkrAkGm za$qe)DIG4i655bLfI9^<=E}pMW@c5 zmMkuQwOy2|YxGNZL#Z$|ZXXG=(r+ixYkS>5qA(Am-8rl{!#Ruwln%wcj&|6iqU-lp zSM9I%5^Mc~@Ui}fIz0z~yub(sO(}alP;PlOc=e4H7}p4`I|`}le*`MTh`&9k`5FoU zg@FuIE5Q{M#qlWQs1{Wiy)kJ4dThZ`1yXh&-g3Em^YHRY<*H}p)H8s&CD26vc*60+!DuUx)uest<}4Eka#`zD@33ri|d#qlQXxe*h*P$fHhcYmzs6jc>Kd z!2aptZp;9>m>>*4qw+;A;*%P|8$AX08n;WqxA81-sK3n`_|5yVI%sN=+BdIz15`I~ zgR%z#JFZ~aYB_@2)fE#n>(_1*$q#lVhRL&!ch*0D64&L78g+%QKi8M1m)xV?IBR&d zhehK}9_*LL%UFC()U_sy*SnMjR8wHd- z9&VWdX=hgfvO=uLBi)Fgk8kFm2ntRry?W|^qtP|1{GzVFG#gdb36ey8_)8v&Qa?p+ zJjzIiCm4sjy-pN;_DGmQcIQluxK!?pNl(VH^v-cGC|#}$!SrmCY&3g+DyuD`Z5zzV zH*MN+X~Su~vCW2de)?w2lFaDn2Yb28B%xCCsjLdY3PH8lP1In+3S_q-zkszfqEmRR z2yW%Nf9!;*Dv+0#L%&`PANQ>wJ5Udj*=C`>jQoToDNpU}i2oH7S2}BvrtGLRs7{jb zPWq!Lw(Kin=T~M?;08f2Rhua$Hs(Nu+#s<@-dh_hD~Y=TXRWuI9N58Z`b`ogn(elg zQe~q-o$Fr>^1|ZH$CsAS0V;B!5VOyW3n)@gL8-Vt*kU^8XmtKM#xC%v) zb9Oj1bS~5!oF>{l9n$zdd?DzYZGwA`+OS8>n4<^w4G(v3C&JrH1hwSCvG5b6ve4^M zJz)1&TK9vM0ee0Z1=ZEV?F9c?5v8=RqyAJ@syiC_1B|fuFNdP1y~&YY2>dEg2=RZt z04F|R0mnA|5dg{0RavtCRZ2(xYyKvb{o)_&t7I^$*RYi!yt!a^wah^`oqYBXd36Z$ z7=v(&0`KYZVP<^{pv1HqoJp9OS)4AS`Avp?j~na(M0n(?|68FnTu2Ly4>~L#85!xc zLk;PM;fZazEgNwd!9sCvJIxaTT-km<4uy#8o%IgF20SOaB7Sq3a{LOXXysM+&^Y_Qyz?@jVBEFkjRU%vVGa?1LAq zv#7~m<@{}|;DHXj@<3&+k`W-rLQDFQ`#e%8`(s_;v1@fB>!t9)QYJ2LjJcZIJ{@^z zd%${pi$y;USPaD`(Km1)9?f?@R^_j*rTv-MES;)7XLf3&uD)=#Wf1le(8yDa$ zt)nrcq7Xc1U;hDaC$1#0TTP8)rS0HZIjU8S5C=9=h&iFpks8Dj%&^ zu+61d4l2U+p@b@U#eebbT#XNz`^n1Y)36!W^M`+2TEo^b=-3SSuvEO&tWg9W{brBU%n@n578C74Su z5QTmv)V{&^V_2XnkvAye=hrgp7S;*yP>*~RIAmoxoqDs2E59rL*3O)eYXZAJug$FS zL9HE4I{V*kh?hVbZU&DhSlk~B`d%<917M+Y(_ZB=j===>-g_J>4*y4i%ad6==}>Ih zya{#J{i*)dg7s`gRo$FmKe+zG&?t^SX8xVV9pdNtm>$-Wl4{pMVH5SZKTAn$CBeQ)b@x@6Gr zWc@soZ4&qM$s}D>%ow*0CvZF1~k0q1H$g%HHyVbopMq|zkvB=7uBl)J7JV+Y)H@q?-cY6uDD#&wGT z6bc_2lI$DXGpZBJoHg&Tt<9VtL(XfDxWCsC0OQUkTZd6w*HDV==oG$4tg~C1Pp4U@ z)r0R|d5b)b1=l~MKL99vYX)*S=LE& zWm3(Dl)7QNmGuJr1_$IxCI6xT0{4d_x$aG% z#4~P}_LH@nA# zX`Zq<;319|;}*23b>o+Qa-g~pS&pXkUT*{6M%09y1J%3i-5+tiu1v%5aPh62OjwBg zPZ-7vlK&`usV~@47@ZejKnm&%Hr3vB^~R>)sWvyn!2%@HC|QQoVxkYj(N?x1!H21~ zfPUx5ibWHk#3l{YFR99;!ykqLE)>Xe`}u{RD7XGuNaSiDts%&w#+Z+fX`L(#(nW2; z5ckjOMI75eOU@S`JP$G)d_MR+d9@?Dk_ljBT@jOvLPJnd(}X>GGRhj&9Vw*pAMXzo zfT$Fwb`gUkW)5-4?`n*s=Hw-H1ffUt41j&t)tvOpqGoCGLGO+c&{_6Ufi&%yVf^mJX zuK1s8&nyilK*QMefSybc8&+1qAP#9CCg*lfJb(0?8E}7)dLO&v^?R76N+#%Ee)Ro4 z_w8Yopy$R}?}BIr(*(j-RneHORyu@59CfV;9Onkayn*WgQ|&&T6&u_p5|Z8<$&|Q= z)F9lx0X7)}HO46on(h-SQj^nBmzB5{-5jzALlR7>R-mby9P zw9$tfu%o8BgaV|P!i4NERQpAs*laW9L|Uh}v*%;0$;l^C%y5%%qc-BAZ7IocS30s| zzkYI#&`Y&fl6MOHumU5vD!xrCx)k=aY+(Y>=q_$gx|GzB(*TKeEy?ELCWM2^FlEil z#pOC?zMDC@_dPxZ1+aV!3@8Nbth)*T;@1IAu zP^i<9SzF&0LK+Ie0kHPHCiTGOj^4fa? z`}Cb<`W-BMHkBUJ!ltn|>|9C3=BLYzthq;Gpto{*-XltDEf(cK@wem&yCN622e&?+ zvpm**AyRrBf55a2BFB~ms=zu>0NOEhl%b4sDFxx^go;51{siMZdc5Ftc=9bf0Q?uy zpFWW^x*kUXs=l~o+`O4AN0e;*Y7Owu8|d*X?zbro&S12v`3(;hmh?e=k#XzAgm+)F zp8#eMsPfVEe8)p1JG%?BY07XR%X>s~b*7(Ej&xrqlMs7I`m0&G9&m%r(Q1wM@J>u_ zZ<8E_Z09Qfq47+8GVa^`(l_u1ksOuCaw&lJpGYLHqF8VH@dgEeF}h_NwAOju9xBuWcI`ukR5nos*qvC>ibt&uZIjfu!KgSWy%*)$cIAuIM%tv{6UwDGKNUEl0B#C9N!xqY01V=) zs-*wS1aQG`od&)qC4~$Pv2uJzi0b_t0chc+^WZ2Y(o^DJ@>HKgqyiafAlQ(GW7H`O zu<5>Bz*EELdtXl#d*4~tHJJ{$UxkiIq8_{0Vf z6WfKKZecgn;?(PWks6|ZEF}&f_#SAGa2Zp2;Rr7AFwmTzC zY-~M1h1cTG&ccEvRQ1N)-8usrh=6Ku#+1<|ITX56t=4tDy<6ZPKz$?q z?hfwr)+ddP-heoT>gxDg={5O>zX|esS1%bE(U^Z>0^w8hGy4@mD8f%>z@G#T1ngXE z`$eT+r>(okE4cu%y;p08vk4t^=q@}k5Ys>nPXBlw5^g5yt}A()pt$CVOLHmyN;+3v za&m*`V4()9)^>j5%4fd9l!?7eVrS%OBv91n8l4Sqf1-PPXkfTM1gHXqT7U0&73Njn`AaE>~9siJ%rwhX}jt?I`cmn#_*-T1VQ%z6o zocq48`%zetJ*5ADdhZUNB*?a7ps7sH*6@#WO5;~n#S;&JBPuTxRHrJ!W`zsRw-Cye z(b$^LCHuB26IRI|Tb<}Zv!Pk-yO0?f*JDofX%h4DWSp^mF15KVG_ImQ&Ns*78D@7t|Cwl zLjvwZK|!zb#kBAJTLPc_5ySogmL(J9-ZQ|`(l;<9Yi}=heu4Qt?H5vwEYdFpoCZCF zrcMOeo@ym2ybRUjB%UuXEQXUqPM~nZHBaA!e7Zg{G!YTLMl5_;E0;lT%Mqi=e{cPb zdjTyq(I6QoWQUOYhG~fe{>||7Mv`U5MPpe(1pyWRQz#bOZyMFly1q||rLFr4zBkJr z{tt|{E0rh*{I+dd@8c0=cZxpbO|DO9SDo%>&B9`^VC%hJ97)6VH^)t?8X8+9XrmW% zwSK||zI!C8Vn^bOCim4BEntRpZZ;iG%IM$x5HaAJnak=SfHz3kP%a|d7S>NR{jRqN7La2x8I(}$m~a9xU@YTfI56WS7fQeju!cSV!bmIAUeqb z>!Z8vVk>nRu9rh{1Av;I3xfK+p4xfrv%3NEMadeSZ0Rp`2=pPJm_F^!<CF@;BzLx`2USR?zdJYWGuOE5KNU_sCYT6bH+I##l_fdKd&AXQ+iZNIV5ndwFgFadfu zwOiV3A0-OZv#NE)`?i_;q<+4rR%#D%M8*t3gghJ=R(OmW9Ev;AN#r!Iu1c9Vd7Oxe zJoaUOzY~(tqp;ClJ-&C%D42al^v;lIxL>a_APziq3%U)MoqV}OOogmyG+&;x7#LP- z$8`RArO4rTUwwTLC=s{kCbZ-Wpbpp-e@m%wnzHX>e;&E0_0P3ErU1v5CbNG^fDrMD z??J#xAf|JpTd~}F+B%AsAGgK(>Z@$gJ3oEVT6in!k%{NaET2=08pM3=d=g9@yc)x>rtiC^NrE5}BQ9Y~ij)3}4FDy(YGTLdy zW77X4*Z=M#^RHuV>;M~!U&?uCs+%PCM~zqYz!+Qsw+Uv5$mKi=;`ElQ8!w;j((aWP zw4wsz)2B~bb^fC6M+--ZDxt<4fX#TTPC#IUQivFE6LtfZisla3X=iM?7Hj?S0#u@G zGP|@D7hsby`0UO-eq&Se;ERgzfm+S}b!(M7X3Y}xYZj5Hh+nYUH{88eO6DQJ1`H7` zR42_3Y{|(m73qe{3GEeSW&~JeLcBWQgiH6k|FYydSYn`<3rz5ip>IT%bg0o*AAvor zLiW%F^|hX(DC<89@LU6`PhE*4p4FxHoq)%TVVvQV;JkJey-A&{bKJc|!ey_+8zMmk z^dP|OyDpa#9SrCMN^D`%J;o06P6CIxWs9I*{RuuRQ2nVJJxntl3k=519LlJA_#edH`7bGU*1qF7n} zyjYjrNpfqGJkHLQXJgWMYw12GWGhjs`9sL}^?($w)#Cj@{%#0hVc*s*MfujFz6Thq zo52i&vfl6n$&Vb>I&XUbxt$*eaOjD*D>R+R}0k{zc9YXPhv4DW_ zuTs`Z=#CX1>BJL%WJ)z$d63r`b#C1K6It%ruYNeU?q|05=Urrl^)&O(goF-@s;t8O z>b3JfNo0mm6BFtniHwyN4y!eZ!nGo{kAZ2E0yV8Ac4?4#kyby!?A zmX*^5tJ7nX1ByFU&6!5%*Fh{bZS4qM`zC6@@WS+ltw-1ax~U15PA-fNxGw6muH|?bEu?XxBg8A0R&N`zaOgykU;pSg7hEvH9r2&1XBen+R?7yU#QY z!wpRA^aP>@$TKH6I5-A|ot-uQ?(Tf0cNfz^+t>Yh8D7*ll$g2H!W+wV@CX{w#yVO7 z5CsK==V65$r~8l<)cFl7YnOSV0p+QI3N>XkD&Qx#hqW_A)rqr67j=JB5u>kv?6$34 zJ6&f09B)4}T}+=@dqpx=A?oAi3y0%L2@yf}Lvqa$gJ@oxnGL|&@4s+QV~1?8r9 z&1B;ekodkv~=_$?q+{5%Gc>Ul# z`%u43-G)@(lnz}Ti@*$SbZTJKdgiCT%vmNn(||*4USeldu5`KSq}Pv)orr#t5bS^2 zT1pmuX3kbsT#kFE>8fu?*4i@XZ9_Wy+y8Bi+g1c_n>#vUgTZ(W>Nv80B|>F!N){j= z71zto5I)ruJ@g!ub^iU3Qto!ZS607_*5r9uLNM6ld9^$ZZc*pl|XF-jx^mn5c%9r-?04ayfe1!m>R}I8ovXBd0?Sk}VhAbx_t4 zG|%4p74SVT9_0XiA(#8}L@MyjHr)+zTi-m`#%g#oyq{^ z+U^*AJ$%JyOqVVLkU}6$n`MAuhib+5zz*;g-iMrhH70jG97A}Pg?pk){gv*S5H zuTY=vu7v@oXvFLrMkyv@=O_wp)L1x7t!((+^0^NDYV4#SVMqS~br}Np6L37mFDxu< zKF$CtPoOE_Sr5QTjt$4}>`9P3q%|Z=v1pt0({T^BK1qspd!S2*Xa2#9M7LJ_S700H zMO1{&olD^NhXQ$ufW8%{&wTTKbD~1z_e>HtP16oq(2l?mn4g^LhNk^&@=EoMB1gHd zTommT(fs{dZ&2g0rG83sW6U>vfEbc_{~iMs2OM6TCK-^r1kTskcR%?xxb3+g(fe$8 zXtS?EiaK}-3i1Wssf9^yIbZIsEW4d6DCVu!w4k22yhK1cp|@CE1zLNKakyAmiZ}oY zwk(OBIhT2@O*y=|SwzouJp^!m1r!mj6lTO_H8fBFextEHS3C30Iy?8|?W*3e6Rsp( z`&Nt$$ep=jZ|gf2Pat8S0X`p__&(LX(NQ2ayvRT6-!Zc4)`C;`>}0*(p#W?tD=C&| zdYF1afM(GOgyh$;xg4+^?aq|2 zJfjGuBoT_|Y|3(j`-+;5Z0zGg1;f+T$l~1X;%io&W^yz;X>+EMj^ ztaRDpvIZp#3}~M1x@rt^e=J97B##&p2c6E|ks05Xuiu)_b3GT8fEV7FhZ0a<08=wS zbpn|bncG4ypg;a~BR?~a48Wg1=lY@MTN768Mq;37maA$9gmd)g4g~A0*@OQ?PSXpsKn+H)hy;k_;%(O~rLEA0jNr*VnGYY{CMWC5p$?K$ z0M7ZbEa~?E=}$`!!wo}JhG$keA;Ac;C3Qbp^;EVv9ZocTBrGuT36lR(3aap?lO+C|DdFd0`iFS` zHwTR9ZzNKp2!Aln>8xvLGo)fteaZdf|7PBhDMn-Odu|YH^F8yfiVO_T?W5^>3xgCE z*&7qcQ#J;pOfla{%*&E%`Pq9~=6+9jq&|daosc?_z4hL-W}QtkhwDGil4!K&mFkiS zWq91v)D-O?`=_&@LzVjwM+f%-x(z!4lTSfT)OyI_I#Jh&-SjFN@I4qi@_YuyJ-?(p z!GFr}L=PQBv>h{#p87bu+k>J$giao4Hs9I(wN4#Dgws!M8`1ZO5KHMWo{=33qq)|A zcLTlHCy)YQWEIlSE!6m&JbYQ;?nLVxh4gMC_;t9Ywt_ySS-x8&GNkksrCI)BBX1U) zc0{T1xbeF*F1=oB-Dg#@1~9hu8)jjhd_~zDp$%8bIsryBf^qhn82F+e~&IejyoTtdF}_krX13WlczRe9*wDYzO~CS zfMdKMo~U_Jguzr!#J@;iGoqgX;UaY|Goc;%uJhMGnoPk#EJ{If#-WN#WH@R$qWjYe)Z{`BFb!0eBS)GEvzD(pAzVr)`W?3w(4TM80V19=DgB<6%>w` zzVoqGGW_L9LGf&&>%>APqC}S6Nq0NLcmH&yZ8}sDyEm`#cJxf6!Iz|6Lq#n8tamEie{q;Xx z6+n?``h7oIzWR=AGcGye<@6QfHHTtiKvk91-^9xuSB7C*GpPzy}-uZhcKAy&Rzl zDUO@C$iO`j=ZsVEdKE4s+1o`ZgGqN~3Y8b%ORV%SkiJgj`=2KytnVgz{~xB_Iv}d= z`vOHp1rr2CP&y4jKmloxR0I*FLy?wFsTm2Sq@_C~1w=YWKtM#ga|EQNhZ>lfx5v-# z``-KfA)p`b+q2MO&rsY(`OFBu~(##5QTALoW;{XcUEGL|`@ z@BIEmB(#as?_~GAx7(DmI#9Yhy{OvuH3Q3Abi_uNH!j&5@EA3)%3DGF31S+v`Ki;y zC3`K3GV=X0*msahXPv%F^eo7m!Kp-hww~={G{hM(PRQj;>MuX8Sq%92>@%U{m%u2P zKF|`^7bztVaXo~MoOUV9dMNSWQ~jy&y*;fJRTqEe2~7WEWR+~bWRI88Fjz=P>OECM z-ri0M!e%m0u1MAsnpr0?oa1=Xh_#+emu0qk28{prH~|CxM2iv5XAAOQ#qqKZ@TUKp zgnm^pP|{>fcjK(PDKD)>2EU;wxXTi#aPGp}H_M!doE+AC6c=&EgaPK~tBkjvK9?LM zj7aSgWtNJk%>&O!XWf5l=<@(x0615WGRx)Sso+oIC`cuxtZU8PcrGdg&3kRfAttCt z$W|yVP2fM>d`8H_bIuz0DAEuk356La(-=FY5y!{6oKpM~idV_XY{p=napwm6+)26`Y^D98rV6_I+<)p zN_pnL=yUBvo)FQ01;!WR(mA-#rySbY_JarifbO&q>9X_B^8fuG3J>yE!eX9*p9FCy zE6b`u^%N^${h3k(_<9cJj=YBQ z5pqzJ0v8Lj`nLJeZW<}J7dXC+0YCrFu1u4eXfh2HlejbLN3KBtl_0(|(DFOA1#Y_)W^r`^JO2#52P z^{3RhBpYhHX18&K7a`?O#9&ze?MMG!f0iTy>nuVKNfYTTJ6Rs_9sSS9#fRxB!5eWf3>3gZd+tFN$xL8C2nNRo?cyVOM#B%ss&!nq7 z5bFy(nI(zwd`Bl3EfSI?$+weA!HK~~x!`j4Qp;8uFJ=|}pDw9AD)&9-n975Eq42-~ z-qx=yAbY3#o_ixAs|GJCBJf>H1MXMBcK}V8W|9XN4s+t{yW#WX1g*t`D{Edx=69NV z(FSHR%h+bQWo!$HIH9DUk;kZq*Y9Hrk~s^5hkX#7OAa~xK8{KHkkJsINH%D}X4DVE zbol66-nbz++E{>f4=;p%Y1z}A@E8%1Dj^?sm?H(Bft|KU z<6-1O$s^1s144fu?vV=?77y{J_+*#QYxCzQpSpGU=F@s&w$^HDZkGf94reod`VVt* z|CI*}kr9I8gsA}MpLNt2b=<`d)PETtN`S=wzm@+?QRe3pT&$omlK7RA%tuj@xG34k znR#nJimhiEUe}2ltR|+SK5>6}*%eX3a1qrDS*h?~0h|!A{`clsTGF+ZNTngvHibzU zV9e`RO18S%L>Y|;K@{spfs^>&OL@4KNP@YN29BmSN0NpE;fK`AZCW%zn?7Q3I)vUz|_&4hM^*jd%ZoRiC`H zm7&P-CB*@9mUj8uqR{}4Wf|&q%hiPkbxCCf;XdK@U+7a%p0Y`=Q_OQ@<yZ{2@i&dGThVIZ-S`4pw3iLGeCg_&0bg^WXc`Q_mP4gN;YkX~JmvR|Kvd9~i0& z^9(X-45z3KUo^a*v;W+PWDFesy*6Sz`)3JcSc4^(`AdAffbeJL6HljuHDQ{s0} zJPJqT6E=M?QTR9EHxCU0M)6OP>r|w~lu=RZRrm*a&X4lKqaiQ9iZX-y((1WDCCO3A z&2Yr#;>C}l&!!0NOqVf-*^H0cyyGyOU-7}C2Qn0aJ~6rfOHyDDgG3TOnM~>{%8KpU z{})6jG5!Vqn4DO=ostPIFUi#>;PU@(;`lHHeEe_E(XX2f9AIwcXNBcR-+$&ZT;abg z^uHhZ<^!1`$^V)1bexZ$sg8K&VbA99Do@HH0>AIf|5O|G>@Oo(9#}8&t`b+4cX$xQ zWy70b9(6g5{U)ij;-$RQSE}G^m5c2!`P`?bE*y^QSA{?En8DPpF*25CF!h<;#KdRY zO&nzQ%XY87+%NBKlIz z;l+i~K>YAOv84JKSE54~nUD3N>{k%*Q6$EzfU8do4a1-x{MF#{;J$S~$H3s=!9D)h zL!VnXQxT^!d*i-%p0pH$E=R<^J;QuAf&6v{$8E_#4vl1gZrzHRC{@V^Uby(U?=%;P z&MELa?=wwIUZNAb3>~0?-+(sE&2ihrg?`l)90uUw>1 z%z1`6WO+VGIvvO|O3M^rOx5Ww2OcQA4M&#7Emp@z-zoDd%f~FV-fCp;gh0RZ^1I`#vdfJ|RdH;TXtsGt9ym z$RCU9%vcbXm+3q)o19gDBIB=$x+v@Q1;iK+6JE82re{}N@jZQBMqXb2n;rBk46liU z|4H-vPVo(Z}va$E7LpFdEnHwptZ4mT#Rs3D!lNw zbT;8M)4{Il|JjC-!t(mJc}AY9DxXd{9Ms(Z-5mDh$&LY z<0MtM3SCgDF?jw)K$9yOD2@Zm{n9-5(1d1JH10Gba$kD<_a|ouB|rM`C!#z?>l0%8 zJ*+>vx>_|25f`ARyNRAhJaDyYGes#lqo3={p}^Z)*gu~WRci1Q`BDwzJZxu}SV9;Z`tcbW~MxRotEWu4TDq4L~74E&*cB#l`iFQ0h80 zZU0P@5mA}z+P-Y_b&h8*$a>=JJxq+uBIzCOEYEbRhXKq3J><-OBudAx7QvqQpDJcm|0mw4qxUU>} zdacSojqALU@ar+XgeLXLsJtZjC>a?UvNLD?e%1l((8PoTI^bTud}&FmQ4sz9{i)9y zx8R$a8j-g}QP-_6$$*tXRJ-4(6^B^eii^3WWfN%H)u~xT?iURb1QSE}qXJu7TTQvW zSIf&x1$7XwHy;<^8X6iV8NB=R$J>T!=$|~*ITIu!D@$r%U_ftDi3!QipKqYNa>dll z7erN7g0m|tkAT_dhzd+gd*S2jJFxwjgX(-ph^(JK{L{EJDue5z<}=VejL&qW@r;-L zGHx=zL&3ms;SATA#l?dV)0KNUToja)MFwW8d4&a;8Fkk)dlhA6{Y2=}R(I05&RmX; z9vB)Z)00e3Hjum${BCQ@At51wjQl+NH#B;!YN!IUxmmKE(_)mKm#2iAuq^NE83_oh z6cR};G7-@$4b@;Avl67EyJlf!DWgUWfhxDKpcysi{@PX(tQIs9&&#P18_B^IWOg=_ z;dSXKv;(F!6orO|_Y@Ti6-4(%Uh?$x{5#fYC8(~e8{BCMGWVytn*O~nz6}pojt;#) zRrg%ngexdyW1|T7RA2wGoC*6eJl^l!ySyDx+5<(+r~AuA$J5KJcge}JmhOXB?T-CG z&9M}0I2%?DX-J9d>R)fSzC{))bLqOzyanM)-{iL!rK7pf)I8kg|Hbam;%s1Gpcr97 z0GeiYvats=gsuj!C9$1h6a_tfh)T|@l_Bf8-PXkGytid-d!X6goTp(?29NK%bz8T_ zFVVJ!GOGPMVbX(f)7~Dsko>xbK7UG2PkH-RN~1`t>#@*O&(aAS5K00idGUUAHCIs6 zt1wCLu&|5WV%tvJCyY9Lr-6=cN1<^S%ggV<{I{P!a+`2opkF>woxzorz4jY;MK(zk zNn&SfS^yaWzg<8KZ39`-X4aa|^*dK=>)KT%tuq=LLVy3J;Hlo131yUQTod=$@1P13 z5SB7b-6h$*#_VS3E>hgED^h*G`fhwD=_yjszl)y#s+UT*YzAb2R#Y6i_jTFK~F(@xn19NqOr_E z{W&8z1bm>u<6WUSMb_Gy9)W21mBi=!ymE4^5BZzXw!ZUy$hCum=bBqnhm22jbRIr= zLJ@1|Lf#R>GdH?m_@X~yR&kCmJ!+gSG!aNyD_W@!zmf*^_wJ(g8p(Rz3XSAR?HGL^%aM8 zuf3>54?hTx3~x4G!h(IXy`%XYUB1>Bxn3q}WDP4u=`3I_dvSC|XtMg7SPlT0rwJI9+D(fHt$<2ZNa9eblo zuZIv_q69=NXtBSRmR4hjhr>U9{GQ5)2#|Seo_RevyGh{)*BYbD~oGF_N#>9wf{<8t5wCN)EvZ&2Yk5xy}y9) zP*E`;VPp|Qmt%YJl(_gXJ)@K?>h+GRhCEW@bBzuv(|Y;FS}sbcYPOu63>Pvz<+1KH zGAK{xbIamdoI72bOV+1|=;%&x>`=TOuP7x&Oh%Gb6!ffaZ*Fc{ZcUfodkv;4GfiiC zn1qGnyq1T*|}3EQjz$R zZChI-C9EN%rKbFDeQXyPyO`P8FZ(ur`>@o14BD@RD$#B<(b3Vjwd>+uHouRIk8Y_% zdnq_M-39j``J8@d^IGueVDS2DKU9QE3J9?4l32M70^o!FDAoIR8%)oiM}yAE4MOl& z1nyLY&G^qzvs5`Jr!t*Z=vX<}Y;#WX*d6`e+WJ&OqjlAFLT;=p`B$7ovPFOP(`S0W zV3pnA;(F0O(*lf_1Yzb8gU1p15e`?i;d2&fv#Yw5HnY&`{Bn)fjN4ZZhq25^gi3 z@9R@wmAe}s_-j=--8ki&0tQ}!)>FUwJ_Rc&D;p25O-|s((Je52;p zR1iPE?9F%w4NeWXHPOhZ%J9g@rYif{I57(rZEbCeoW*Im$2RKP)A2-87oSLO09hlHb1sdRKO`a?I=&CQ);; zYLsSOsofZhe#Pz|zY}d6V3+bHr)m|jotm&&Le32izd4B3ga>*#?IS?T??h%{A*zjf z$y#dG$#(PR89B8#5VYP9aD+?OFEwf3(u5Gv5>u#quv@zxFXDWYueTQ@x*C)AG~?<| ziE}oXhWoow$(NV2@{yHR({+yBjU64q1N0UXj@|2AH+f8Zn@%bxiV&6MP!Q3-d-o3F zA4$DI_xvAY(3JcLy4*3?K>EdTmlcU<^rGv}dCZPV3*T80dSYPESm)*lqvyG`WOn4dqfUDAq(fsjqBWfP z!AOns>)^@YjqUB6^b+r8e@C+O=S?8C0Y92x|EeuAr6d)!Ctn>Gcs^^K4Zgy|#CF$j zV1V8VozfK95=?gC0_1hu-=mOo5Nug^1Y7NS&L2q$t4?^lH#r24V)I z(ox~V&(XvyD^YO@9#AOCi+klHqgYKUP(>_;Tp)E#?^BH&CQKSv_=nXmBZk$mel#QR*csf$Mv4)tSh z8w@O!`Fy~|A8pKv$bV4$U9M@!Txa6m{5f90Z9hVCc40lNuaE9waMy0fjj}b_%(OJF zGpUG*_uyOOxKoU1p|3>0Hz>|&Xh`uu5KbfZrxg$f!Kng>31LA_&Q~Q`M5nuWem8y+ z0aN9LC{>B(X9itKqou@Ncc|Cy`MviW3BfOZ(9rbr^V?{BT?}dZnQvKvN@Do$QFXXt z*Em7zo2I4lv4)7~jg317?wfL#s1%OdEwR%$b`%y6`^_91PfD^1a|KjRArgav9>PF$ zLwtBhVpD||K@j{U1trVaIZNO4%9PVnpRCBq+Cn00U~W9Y?_!oyctyq>9^ADWc{1gR zySH=x2(rjVGni+uhj}zUYpJN&Q-ZO?%SNArB#*B9QjUhz%QPtCy%cd+m8Z_r`DNT4 zcY)q(#}#f=`I6!D@(pEk<<+73ek||N2hqx zb4`PG+w}&jdIQy0uc%z7yoAtRgcI|`Kb+P7Sebxt5Xc{MujM~IMKw`!swMEL@n+UK}&0 zLf2Nhc-XPSc3IoGE!lH(E>;gQ%Ff2Y@%2^P1-Ln4tAj|NB^HzSS^w}PXHZbwJx30; z2w!LdKVffg|G8#$=z`K*xzcAX=$*Iej%OMfr6 zIb@LrhqDi@?TfymafclM{6my_g{5gw|u>_k4?0F11raI)mdl* zGCAwep}dQn&d$!pCT3Kyo3hgwW-(AwQ-9}09t6iUuX1vpV-!^O(mEX{%tvl$DCtZm z8_TsD{Hy{eeEYVt*Wz)->-QrAHte9DhbHEx=nzuXY*>x2GD zIdk02Fve|w1!=4GfegLaqN;vjO=@QfnGuxCcO7CZ|EuncFv~3yU)Av z#f!}hx#b75Jue@SpF3x~m8B%Bpm40Sjg9^BH=~kVoQb0YzkFr{pmX^RVh$Lx{%k?c zpxwWtP%X2v--{j@x!NVVcima!*_$`QntJwby2H7;jHvB(*H!#sx5qk!HsFaS+zxLt z;2gJ&5){H1*aZY0P4bsHAI^Uq7%)W}ct%W`XH=X0nl41vHI@$_K`?lzqeBOvgdT*> zfg2ay>r=o=F%(&MAmV7+ot>K-kTjt;GdsKLqO!HUGgr6W1qFO5Y&Pg$C+P9aLl_lxacBX%#t{XgP z#LUnCwRt9L)4rthqJuR(Le*(~B4f&fHgN^a8jCrSXSuXwa=jvYtMRh)(KU)b} zkNtvyAcG`sqN+sCc`iDs*Yr{EeBQkrTM_+W?pLiNsFTA>PHdsq+ws4YEiGTe1|Y9S zEgwcVI9;U{7)S!?BMURLHxyqSj}rn^Yj2#$lrO(Ny!B$(9ZzG32g|2c5J?9H2aDGC zay#t`=B)aPrt$1rmL~sw#E8J~rFw4NFyT<&X8B_3xP3gHnc4b`EkX;kBR=ZCBSP<9 ze*uX+JgHm%fs=->eAMch#xosaWB-F7VUzBJ8WW;X&M^Wa%gViz! zh@;#ebPNr0l9JM|LTTz4DJkilY?H?6zkg2*3=Q!+KWr=1R4B(pP;u{8 zR7l5GSGc5B8oGYEH~O-)9L+2{U3TNbr=7T{=rR?1a98;=b+~5xD%Gc@Zzgl*5(#26 zIMs2ZhZ%vjplWZ|g-nngDo#xU`|5<>Pjv3O-2F6~Q?iOF+f5x>7gF!oYtbcmCc5Hr zJUwFhdCn1iGm)1(#B1hz9jp&OG@5@otmLd})>Tuu*uHmHC8y>2Ypp8BYob2|U57@3 z1aRvYu(hv!MMrLu70DC9tR?F^fH`K=)%m<7K^{MGg70dA>oVEdv#-F5WWuh$^Y3`9 z%34GwH+g6b_HEiXsdMtICMKU?(v7V0*x%+YZhr7^`$1T!jd+Nw3};7to~_Hc5l7yu@@jpe5I-l7zb#$EN<>lRBF5P+g*&1z$gC2*AnZ0i- zD}{*7B!wEaLO-)(*g_0DSTYOe0MlT(b0?fzw{i>S!*;F5TE)0__N|)!O6OGs7NQ_= zn(*07Xcg7&(!s(6jQ7u+rU6hCs>wP7+T@+PM(gN`3a&Gt%k=6{fgJSDbc{aF6GpAe zE%GxzBCdwC&RZy+KMxSl^n&Y_NM2!K`J=UWkO>Y+PMIV2ZMN&C#%v#U{3IsAH*VaR zi+sdm`fITls$?+B>nQCOFE${<8;Bmer~ly3xJOAPKC$96;?p4PG!d_sLm zH`2aWO$}V?(Cy+5eucV~CF1PwR>##x>h8zWq#{E{OU?3HT#p*8X-9|BQ=!SeH}Y4_ zQtLIq`pd=)our~hm6gY{^d04&4)*@s`qXii{|%Y%_-A{EuX!r;r`@SoCtik-YVypF zps^k`@84zGE#w^!%}3K?2}_H?gwuUH>&p_HWNUBPgh@O5$6tg;MKyz$=#QlPrP{bZ zhJU9xZUy-ihuLmx6fZAuu54~^zk=9gHC~Z?Q4*`AuL~Ayn^PW)BlN}df{Qb1b55nV z#_HOww$pXwJPrzXq_=gAkVvABAg!d$=bFd48C+1uJ$bG_IcK*{+n+tXy4snOTKKYM z%Vas%yBoD13GpA`gn^w?fK!=U@~i8(^LxK2*SYVs{{>qc8%xvt{ygi7l%Seg#IJZS z2R3;%dp>AS-rvU>m1zBtup^OEQ%tzy4amsWc0th}fFkDcrx}dEjos2G^B|<`d}5)8 z`ZL5>S-i=k*nF?-U&b&!GTF{Cs=)S}slcAmzcf{8HRWb9GRHYpl9(hV4e2M1%5{{KCVQEghY-|Ky3iZJbz7_p0GyU}ghwUT z&BmrkKd~&dZzLtMiCBW;^|iEqB--Ml_%an7M?b~hfyR9(mx*>uz=&ydj3*`iszf8Y z-_hVd!2WSAC;*IA5`mflvSM)7rA%3xu0N9LF5USNs~~;;@0R6}$zI79H)H1txGmO7GiTvOgLq6F;}J1#ijLuH>bF{xjssO0+*7BWZFTxDt;#S zDTug7oYgX(~>ZWFFWCH4&K8MA07ZF*8$`a_#1~qw%2g5tBc32)w+x=bS6H6v=)sxq+dTe)c^VOC$X@eMY=^2 zyOjF*^Oq(ZyIRM`6U|aRQc@9PvcO%!m}=K!Er_t7QAQ@<=cetEEd#?s8yl=)4vQNv zl{u(V3$;5E%2TPXUF-N9bMK{2&SxS~)7~W^1uYv;AK$npXk#_}HrY6OtZ#ny_wN@_ znT-H)4&jGeLj4~i(OEtmRf3f4NqT|V+|AC)@`L*S+4JWo>^9%gKxzheaO3Gy^&7mr zoUl{ZB0MfuP9jcos!&7K<~GwlIN`KyODrP?oi%pQ&=sj;oiA8@ge)OaOp zYyC&Hl||xxHq=iFreeYtx>FU5joH@m3*r(utMhYnb3oLDw-L73gr<(JMMgypIzEtj zkXu|lo0BS-H-2o~O3=UycOJ1>V7T2Jw&ISfFCH6i+ZLx+9bSJ(sC_VA?R&n+n8}b3 zIYB{6+sI5-&tO1DLGdk>(JkO`4H;ez@IgUwLn|1!mFtwmb;`DV-}sH&%d5RtRxDuA zL~7tUecu2v_x$P81RB94KyZkQc5jj(dmxlz^eVD0tAdVDvA+j!^hz4$=j7wQRn$mF%OMgA<%4otK{7rvB_ciM zzU>(fNvFCs90Ah^Pocz3*y`Y!`_Y@}xidI?giTn1 z;v5VzDPho?FHV{X-ArrYCi$SK_&dU%@sBHtz#1lj73M`@Tr)B=_ct=bgzYl|ZWY&M zs3Xf99csTiyATX;1%_W8hi&kiL*sRase5oMvT}0#h@&?U^(_pVKdoZfIc;}q>Q?(l zdHL@{K@W7GP#wNCkqAiwrU_QmK(|b1U$cE-^z;%*tez+3(h}`wT~x}7O%)|bD>Ar# zC3~FGt*{ceCfKs`*|X6YdQuW_>;6Z}!^8Qk99_b%F02gOJ}HOdVB`C%FbA;1-hy%2 z46DQk0w--*?$G;==8Mq*KS}oED_5LiBmF=zSO%YT0nbtUI9vxHgDZzJ`Y56O4f1XUc~db*G3YD^HvE z&s!_Zm)U=7I%)RRw3E)jZRZ}*+t{;VULCUg(HiG#hXMky#qmXTr4_~TQoUIs(0QOg-{sA>UXuMx_`gSKnM#CZ`qKo2?F z7qD)Q;nsKfiJ$qvywcTlx&P6Gg~%h@F7e6Dt^xFDbxJn6_e}yqb)DdIr>A#tV4%vD z?kR=XTgWDe=@tg?m|M4ipfLSAQgYj%tj9*tU1vA;<9NR4K9IWh-L~r)B_$C6dsAJd{sAxH@9|O4@<2J^nplZTcHHqh-VSm7Vjqby*M4{oLU$8g#4~%>Vr-Xs&15ioOi}sDAMhCW7u}esVx;ZXf zqND439u3RBo%aVPY;!+;C_<=Bs4OET(hJaK`m=WZD7dOhiv(adVjnytoTR5u3wR7E zODULYT-jdeEKg)`1V8dv(&+*nkzsV!Ep|8a%XAm{%SFROGQRQddl~Rz}v!(2!9I^ zAVI7~YeFU_u3HJdn{M{!vt84x-MOMu4!!gK(0Qq5XsG(^8Qb=JSGg`J29OXBm-Uxe zjK%VUQjj8KWk1!^gPJCjmjBJ2Tip_|z)66|ZnsPIc~gY+F*v@$6uc9{V}B%U_r)!%J>IOV4F($Q>?2}RyL|)}3IdCO z!4>4RWp?Oca@I9^3!BJ~Uq6iihCgRn%Fzjj2#f-;nV)}?g@q+f!kUg%o^50l`oWZx zl-O^HUIUI3n0{IjV=h3BOh$UrKiG~YV4Q$rw_LseIR{CcnA;^7Q!@ZNKRi@621sbbRdCv0rg~$v{H^HrMet#yUsWOW5S6aV?t`lo)w8^4K0L z8@&m>c=-kRXc=djy(rPC1{7m+XJ_u4w=ZC>rN)~XF}=?^S4N20FXVN6Tr56w9kI}Z zr$$XYv%+O+<618>4=Yh}m&8&XT3$|8>wb zvj2#Bm*#dod39|~!$eaLL7SH+y1$qib}*l4ySc^xR99C4YOq)X2R_H~+jWbIx=D{; zC#$KcO}v>sFLpSweYCcRWE18h3m$yv?0gR}qNB|{l%u;tb2Rp_KNQmCX-Mfl-iSIZ zpX##9sZ?0YKtH!;!OEckVlOIE$JDASQiPUD zrxX9y3<+$lWuv36$U2_V8AhW65YT#Qvx^ZT{$O5TKlvE-9r{ehSjWGgNyriMez?-u zIf>b;6hEPcRIR9Y6vE*`7F~I9xJkm~dDm@!&WxRPN!20VP3ZdCg%{Q%)>T)s^C!{N z^}&kuk`=D2%EIwnjAQ~Q9hzUEf6iz+xoF`c{1*2rwm zV0NlPJ$iNd?c6d}Rl(yhsbszG){+G-B^U4kq^97T1VXt1YUmKfxxB7~%jp;D!R%41 z4y<3mp$7wli|m{UG=AQppNUtBSH1DS=9}LK{|HM(hvsd&mT@6h_t_k0oQ}c@ez*pq z$pnKR(_4d(-XPuqS#nR}3&HUDCn66}toANX^98tb3Q8q$>whh1x_Z`?-dGZbg9zfA z*!7DOqXb;9LZD{Fd`v;9u^^ zl1X~6K4=^vOqLXWBGjg;Cdt{p_Y=M3YPI6+iL2EmxRxU{_mHl}OnZd29-71nwJ;`( zP~>k4(u*xozHyx6Ydq%l=f$;A@ZGsAaraQp%6RyeY;0xN-2-#VqO@r9&mR<%@EIjL zvV^wyv+5S&JpqW`^-z-?nhf-|l?$6rAMa*&wW4l~(Aofj{eYDWF7BreVg}OOuAjZ` zX`4naz&>VzTJ{+v~Yh>-Skcsb-PU;VFg8p0?gPtsEahM-&;Wce9FSh){(9T((+80jc z$9#T=I=MDvcV>qh_I)dvk+)pomI9``qx)fEcY>rXJ_{<$c!89QryxUqAjv; zX9ih~FJB@=;n1eOORj`i2d=@oY<~}8+~v@QYFABM{SGRV_!sMh3_}m> zj(gl)7K*n=Gw)TxBL2K*B5pi2m(PiaX6JXw$OcpjC?Bt(dFFBLhr4^qt>f7+X>uOG zszxHGi?D|sMc&!SGz_x0_%RM4aq7tH+`zy%wwFbE<2G>_*U$fne43LfB(xHGE`JU4 zrAHs;iz~Ix@VccQ4!00^E(_0#U%#JWh(!(~UmFZJ57v-2CPxsdB=6m0*{JvD_CDhC z(fTKfu3%F0ZMYXDFT-OPR;}!%mM*UCp$hDs35>aT+ptg}W_IwyMG;3(~ zV-Kl{S-FlN+#owaP7EVC!^c!|R``9V)+^pH{r9VxJA&{Y4SP;OKuBiBdSn=;7iizq zQT_PePA}54`ulfAVQUh7-GsPs%|oQ&iu0a}IQ^Ots&-`hrdT;a^h_a=aQ~XwQtbZ1 zRk0oHo)e+=5lYy?|3b|jrIkPyX%hHk8UJsC|6Qo&W}BM#=%jCE0cNjUKWVb4tAWok z7SXFtxOn$}S95+>yW;9{pK%>bGIfx8J3NumtAX2kKX4bo0R*H9Qo}~ zsfcXgF*`s-TNoo4+P)cak`O z27S+konw_zrS^M5^j-3py)cApy*3rZvlLH>9ts$ej;bj_5&DV&#RTntV|Ve13K`29 z_6{fJqRt-D3|sD0%7LfB`MC7f5af{EE^3sd>92_!W{SGFR5Jf>;g=D;c=xy!8z$#J z=lw+|>#7P6g@Tas-TrtY}??_P-J|3Ab`b?6<@49Z#_m7zWKrea)&JxjR{1x9=Uhow%BUc)|baXPD)GGSZRCREj z3)T+}u4@?WA{HP(RqFFQ?+5i|q8#a})4e}miszzZW7VHL=~?0fX+2oSmNU50?T!Zt z_!fwsv{5)ji9*KHi@uy;c#7Pe8Lf+PAN( zuLo|Em5b|#3W!~Zx_clTiMV}8NDCT`F1ilHIAC*aVT?JTI?T=G0#JjGZWW~gV%_|XU%x@z&s4ur?RW$c^d||?>c&E1z3V=|&Hqg!gVVkS zxB1=ktI@!@)fpT)hw>l9`~zDcN;%wJg%fI40jSAq^MCiw zen{IaZw{EzjY(IuJv{i%Rp8R0GbEnx)u~gy-f&_K;JCV=e;80>fzlev;4m0B;5LAo zHJNQCiqrA~uYlCm(^Kr0#^)zd%uv!E!Py(|qy;-I-@k)nC=tb^(X%^NQc?o+H55e; zEG=&Wth-zSg8)+Lk1#qU4<9`mZSWH9?d?@gmB5uDR)#{FNE&DCLeM{2;f3QGBOREHjVlOQ%kwEKJi4Dk-3kqoOJFvy-Ie@U7I}>Ck&~fp+ z5|pTtlBv)KMnY7(cZsfx0b29e&F%imaIt0-16&mb{Hw>F&1a3*d)Elm<~UO+Q2e0= zcy}J*o)W+8os-MXC2P77PI=v@=j3GjUr~O+iXkB=zt5aG11A|8!}tSKb}T$4B{YMJ zjh!8i;7U(1D;*tyGb{kofIH^59N;2>lQLUD+oc2$7Q9h5Hnt~fYTgFLW>9f1=aM0j zNI3NoIJ^@H3U2%R`%vAyX=-W;`0#;^iRmpEx;cxqgG3TYXjVQxHTuHog$3xQ^73mp zKF%a06bqF*h(@$4tY~3&!ZNsYQ>)}k>2LG36(3)dC^3Bqg)^DVIMn_rGkSZ{fUyxq(=|4qw zns;MVg#J5dGA2eIoX8*~0=jJvg+K69N{Wh4sIH47heBr$uq-5CIGhC-4R=4d z)NuugY#A-~q=Qy_6Lgw)9R4W6s)jIN^7G@3{3)1Dp$y_b0Y+?u@Jq{YOa?V2ym&2c zSD1RRuHZ;SWdPw}wu8vvc;{vz{CAHiKi#csSj zkOv1EgEoKktI1h7C=w)pJE#hma{L4$;t3cBkx+A5dJ0r>UT*Ghm|n}r(*QRHu~q5I=2I|w;5SBm=kP$l{%F^_ z6k6)8e2j%yD2gl06xXq~di(;q)EuYW7AUV@pGdcc%|m7UJ&txFd79AAjGZ(@YMRTT zhH$*tP1{QSo`4es3z)dG)<*l`lftj?*|oO?vT^{;Jzl%Gzx<_ZoK{DpD9# zSv6`PKW=byn@m*MLlaPbTlv_Zg$1H2AH+}~l7|0aUJzFq`~WSLau8gJaNc-D2pkSP z3%X_^W(X|>AhwcIqXs+&wjj>?_v7I>Jz^IbY}{r^_NM?<0)F)Avu9v}bRN{I;o%fS z6{eltmzq$8@d~bvmo<{NJ>(M zM`mVbhLa%ez<&)$?s#E)7RW~6U)5l_!NI1mF%h?5Kop4zAXt^~uh8n+KQf{SzYEA; zPHt`hScK;V`<*&@5}=*nc4H$r6Y=}^@6ZPN4S<-xV>iUal5VJHgTk-X747AZLZL+H z*_oKW*@%wN3Ydn+#v+9Q4$<)`?4g5AP9R)vF$Q^2v6+!(5 z6V2AvwpPltL<^eH28M@;+EOVgDSx#KkUB!o3gi-ldAAG4Q5D=d>FLJ+>D1D?3fYUx zPUV;`w5dV*1y2J@xF77yA$mYV0<<*s_4gBHm$1P}Io`3gvieiMH$`N8+Sy}?os@S^ zn*_JW$jO}qVQlhPG1nRR3YT#G@*h<9GHv_u!y6IIQ_76}_MQCF|3rmVk1J|RPwx)3 z2#vqGOUFkiYR~|5L~d@b`p~O8SD|y@)sJvyeFpe9_++*_cQ!umLfh(y*N{saHKehS zy}|YX)0*$i#tRTHz@fVo@Tupn2`WFfA+fx~2@=E(5fD}aUQL0+8Uc$F`~c~Pn+mdPpbKSa|1a>P;)VK!4^>_cSD@cLix>Kh6x1aK?d$q`&olp3puASXoA}OAhme!E4;FOe(x;0^+ z{>*g%4cHn&Gj?UMCJTZI?2omF3R_OH>Pp%{7aH&jW z$;4!08zXY({{DQ15T=o{{M>}Ee=CXe?dRCET4`bIyPCdM&K!GJ9yy=NfWGV~}rTIIFmI_O*viDQ? zLz=ZggL2D`lL&V~?RQy0RjKDVz?PW39c*Qy%4Fv(sdT|VDS97uA)jbbQaVju zon_1GpU~>)AdE4efPz5y5&BwL5t=?6FKLHG7=SFwNK*uwIBYMq0Lac-f}*qw^NV1rx<)M5d4%;T9)8$c_z~zH8hcNqz5(Ab>ZB3hm2aE2 zLPHQ;pTOVl*WNkrM7&%E^7jhhF+G6bBvfDv1>a#Nbg1Q+5#bkmdNq{ZkR89OZ~d03 z>O@cmMmUYV^-$fw+O&V_Ohz++Z+8TXMaQ(QdY4qzYWlV^-K{tYHyGxu5Itm zRfuMn2X%GX9t!O&4Ed;-=z56C5=i>cYbQFFhHD7rMX1Ts3H|@!4=c8N-q#i@$EeSA z&{HXs@eUqMz^?urOhX*t*WV+m@$~aZUjqf%02y$OfygzJFeb7h1$jFn(!Uj>(Q~(taFUx9XGr1a?e_uF*{~dA zf_RIH88dc{yF7*xmoiMCwfSIKi6=f3aH=lWdN z`+C2xcdiA!S2z+crdIr_SaiP?RBXvwDw$xj9(Yf_7 znW*&IFMX_+fb;iBXKI9%dK!r8>QmoYQ=D9jehIM&Tpf$J4Cmcr70rsy?w|Gm%C4AL{o^jbtV{7P_zDKS@#dQ1s+6oQ%XxF3I( z<9hGTV~4*DmZxDjfUXJ}V5Kc@4){ZfswyC9`mt+!SLR%D5|7~-)adjKI&xL#5^Vz#Ks;8 zsC5qDLg2j}HVExe-?t_4SgeyK-oJC~5HeRaJOY^xs0^0~={@s6z`1%o3uB^05@=~e|Pq$7gv}m zk$YYezY-38oVv`zHcvSdv;vy$7l4}v88BRzejniW_nA02t^yGjiU7#_S|`pY{>aTm zMpHPPXJTefQ&E2V=FQr6zr_@gwE*`4VYpV};ymR&pj>YE8a6aGKGkw^olXB*QPBeB zJxq|e^C0}d8K~Csu!Il0yB=h8JcxQ3#=gNE6PJk~wuFC(Tm3I0 zQx_FH*7)*3EDsdF2M!K*ot`Nhnms)Rv?XZ`nHqB!(19i%&FcMX9`i2?o>juA=IiYeAWr7rd^eRzSfy>>!ss&KNv>gZJD&8D zYpi3vag7Xc#`A5lAeb&M3=TkWCty;7s~#lIA3ksZ`XLXW2}-{EP}Bnns&wcUh;VBF z@++MT7Xy(RIiIL#XlbcDl)P&@JMJc5QEEE(_fE_73`Qs|ze51A^H#Z6hjo>p^ z_IK!EuS

eOP4VT_~w(GczO$Kk-aVP1XN=FN4$|@87=%+lI`JnTj6H(u0Gegf$FC z07eFY(CXyrv#$}Y|Mr#)pk_~&&tb{p-8cJw-Mzoq$IXQ{|5@ss8Yl0}<>f;x(zcp# zKKxNJv539RS?AujhEnprQqbv4NwKcp9V6~;v=Uz>ysEvKm3Y@$UmrX8N2l}}<|#|c zm^01{`Z)`@3$Og9iND7m{H5}*I0TPKa{Qj`ZOlL|1v?|(B!`)e4WzQdu#yJggNqsF zE|okGGlNpN_td!@sMTFo%4QWEOtf`_LEL5F0_^4B<0o8(P6_zb9+IoT*V)YtN=zr` zj|?PHH8seL z^SI(u31RR2Z2Xh+K=;@A*5Oc`fA8Aq-rgc$Z1_b+Ismia#~aE|T+6%3tJ~W&%IniH zFt^ENHIeWgB+nty(IvPYK)heS76ysB+Dg@`FAQ_wH^*$Vq{RQ?iE3ivJ;@a|=dO#- zB@mu8pLZsM{Ig;_*Oxw!a9EJeUz4)C&|xP#q%8zGeR-%jpY2YB050hQuob|1et*bU zptgp22$!K02NdBrx8j>CF~XU2I6#RUh6*VGU;;<#A7GRO<5z^m#UsJ?1Ms~h+MJR> z2PiU~cGs*x%!Mf8pgsb{-+K_h0?aEi4~JnHlrW1$y|)sEVk1Bukn0CZ9`gc34yBt6z;O55<2{E$Hekgg z(Xa60=JzNle1RN(5h^|4xhtpA7+UVTc5vprCpIRu7may*Bf7 z+-H1_#i9|F4(MY6)nqtvB9o8<^P!-E1UzSWv?0Dd0ooqOLREbaPemV%UWLxZBkIIiO9=?j;4DT^S51DkNuPyM0rkB<&if}F0Ai^7`szgMl2_Ln zVQ^qY=l{5R@I}Qcjt5k(29?BG>aNsBMP_C~VRZcS@Hoc%emqi%h$OIOUDqr^4 zEulN+5P=Q#lol`Xh?KqhtD~G~+%GA7^%w7p#^-iDm*{KxelxC<){0g$-i4C@5Pr&p zS!bZPq1vq*}FYD1ab<++GK36#@EP-P{C(g~?#> z!a%+i3E+f5)jLar0f76YrlcH&@gK?^sbB<=Wsu_!pm)b+opsdnC&D4U_CceM$j2*_ z^D;9TmQP%#sl&1{&5xjMbk1esPlj#4Z(y3=4K#scmO|!!wJmSjyzj$WV3U0Jcfdg zobvT670kG(9V&X*)!pq6?+B6A3XUdNYpkq{%L@zeQO7-b0AevSGegA(`2$oBFQLTq z!bGqv!#oY>MF3kB++>gq3eAE^h~sr}7L^_h$R~w0FJW5x98SH$;$mwsPaXgh!On!m z0f08agB%1f6Voj*Mn(24_75K(F)e4GFRRdmZV(D&p=usgF!BFdtVAPtvM4VZP_apv zs{>R6i@7MCtvf=K9GAWWeA$z<>U!~&fRFscI5CIJizl~i5L1I)nCu&~;5 z{iXqs06?Q@X|RACzKJw|9#!w%pYW&{jcS#|azP_S0kki)Jj$Vylh(+pg#dZ1V-rcK z7@3%)ZQHrv5vFEkQG;he9b`DrML=T8)ZgL9%>dRpuZ$=Fn9T+bVT*#Nz{?RpR~YzL zy6`ni3Jwk!#TT#mlnQvws?N^R5GIuS7QuI|bUytf%*=uFi|pCnOzfA;OjRGBs^*^o z33ypKIYC&xWC5xkRS+p4y9tesZa&!CeD&c2Rl#5+Sj(n>eNJOzW1QUMgw9~_(u1ua z?Spd#P&{76hvTE%<0gPfk$wn-$m7r!GlCu%K>d#@md`tJ%|5kiX>ZqA0y7M-aW1&u z2E5869toNc9-R8mxmEy79!+u#MB~85&*pcfCn%yW0mckjR0sq~8|bcpSQ&ynxa~E< zZG9Cp70(aN6fkb3oq!0)6V0;~d8t45{HIT!%+aY077rE{;|oH`Xnw40n;R5AaWD%? zbb9%!ONr-&hDEeym{RqpPxs###@B|v5)7PVp_{d_ZdJJx1 zdm@@Hrsd=u-0ynmUc%HYu;U8?m75i$XRxN~vQM~=K}d=I=Ctz^z;fV?!-oTfj;OMm zEUdM=_wFIa98d`GaKL4~jEkcvG65#BDGWZSvoA`?%%ns)O}&tt+#e&VKo!I!#olJt{5%=`}aRH+5n%-~@;Dc$Ps#~Y^NDG4E^QLFY zyUwv6*UP+Bcb&FhJC_=I>5wFW%rm8|%s7r8JUEoY8Q@OBat51C_z&VW%u|Hj4tew? z;Fgw`mqWny@9rNQq=di>-3jvoF8y-eQ+5v@ZrU~9zV1A6dSNTJlbe>@Rq<1^7fbH? z{9t+(efQwtsgaYL%FzP@MphvlvF(t5a4ESRH^}O(*LnQ6G&-o!`bfuS6%M}PpAK?D zB-l5Gzu}2ChP~*-C8A82a*{_nArPmNb8`U$@2!`Us2u!ry2;hmb;~4CFg|c|Qk0+n z2&(hX=ThL2*G}XM@~b3woPRbro7Fi-@VawH2~v4J2!8>m)f-lMZ1$yq~~M#FX9v z@6~-5e!cyMZpm0@e&V$!gb3-L+sD(wiF&WRO&Qb+kwL^_N!uK0`Vvvto_e_tA?_L2K}zhBVi#X#W$^7cs}5Pq+iEC zKcsHOAH{Vc9MlN5oTEfGUfyVEU7LuaoDq-X$YmurJ`r2`?t{1-rg>_+GJH4hJm-_L z`JH28IO83xX*;H@Hk>$fpF~xQh6U!V~scl zu?@nwmX6Nf@`7MF$T5&J`{3Z&h}U9H=}P&c6I7($qXylE-A`8Qx4(q!+c4zXm{D_= zvuZ4_`u~F-HY?CIl{tgDnDK-VzEVARYCPT;#H~sFi%>y}{QMyO{`%b9+}iFER7@9! zHZ;8Culjnt4lE zUZmRCd_wX_Ob-tmO76D@353e^*b*WcyemwqV=ejZC3EXE3l&u9*CeZ-D?P%}nB=hX z`czV6=zMBAH~O&h`wOj6y&v1wpSD`P(=|)^@eXraLGgG=a!v|0`!6-BQqk<#fsfaP z3rk8;tE#x$+S-t#`<{MAV<38KL}Fl=h6FE~XKa7vQ_3*E zAvA^u05s#_OF=}%8?5)fd?gW-*si-5$ED$!k@Yus~If&%GP!+?;$9n%PR zpm2dVbq+Fe1+p+$Gz_r+pdY*SFedBF;nbGbuU~`hbP%*BRa3iQ_Yc}k=&->Uy)W6> z4bZW523<7FhCEl*_Y(E|y^O8(@=y^ZzZ#I4!0Gtm<415ua_YTpxNSe&Z^Lup+?M!H zs7R9v3z@mOxurNh4ZG5E$Wnk>3-qq1U^PWePv3?@TkQu=9gokKU?s^LJr&5o9SDODlahwe5_G2){t{L%-2W^x*7j0ot z5e#Rt1j0tAeUXzqmrriRq`e$aV}O8%)F9v^6%NM*a*)bg9zm}<_C-7t4&Qf(hcXXg zaKP~dYYK>HoA#G5THk(@XLTs8mXb6!dgr^$oQ{{jL6$0gEQBt$=26L1rU)i_SE|E6 zihTK_9ARMh6^pP8Y@p5gj}VVSV6{zPpdqOalq0Bsqkw#6#h~5)!ok4cofK1z!+F8; z=UE}ON06hSk1h~_A{zaVkdRRfN0dV!`1|+o7lGLWi4p)b;FkqtH~1QIqyV7(sHJv6 zSN@Kub=v38uq-Zu+jB+_KN`&o4`q3IS?k(0CRP<~Ev<`>a-aODUR(#30T=RE02g4r z?;qE8AGS22oA=-%b;`Yv+%pf;4W^u*^leJ>K}BnZSqq7o?~7eq0GZ1kOk85JB7t3IpV=C;A5tSPSBtM>cAf!JLt=y(Z?*E^4^Zs)(9 zDph%GGTK~$rn#{Hm+djm%yDmV7S!kC1sy8&P|G;O*-8Cjg!kU7#bej`ilMDuJK=OO zwQKiWyI-N>w}HUjr@adCAuc?Q3dF@{c>R6Y%Z_@-qG}up$4#G}gGfRSpQ5l(_IP{8 zPT9?Ib${CSuV4+H42@m6MN)$hl=)PpP&ESZAy?lOJP6ZHG7ywmGuA@`S1+!b?i znL5n}6sdqFSR>`Pm{@(Ob3(*5FHYXa1s9KgJNHtWN~2YAWg5ehE%N$PEx*$0FgRzCyNA~QejB}rXHqXzJNEy2f-uuv05c?& zq#ugI`P0PF&u#feo@;aF&sn)V*2c$8oo*V%74$!>d@`exeBF1xV8v8%r5iiCzp!@# zGw&JcJv^HA*2AZbBzL&~f`bdU+=IIU)?2kX%_(uy2F|hc1rhFdCImtbdf9^GIM!wIb@YL&9~wQ&eFe2MelYSqN*Pg!JVu3zn4rS9$shO5(kvsR@`KM~CH|9UB@ts@2! zo^{5{_p4sFm;3fvjS{mLZMiql!|>tyw!t%q`xbmK5iYUvknUneK76-XY0E^)s{>t} zaqxjIVJF0H8;e!X^6i^SjH1o{u9uyN34*$ttKxX(S3ArTrI*e#WpjNQ8Hyrmcwhv&UAZFKU*^p1u6W+GSfJ3axLGiR?#MZexT zPS@lnw77gl_5mf?1{g%Jo~gY^i01h}e;#f`p#PUaLGYvY|~Irtzb3cqhv?hJm@f=t||MkU_o$P36fqVe*!u73L)SauRgX}ta zX*kqW=hr1a)3|i5#b4#E(0di&8%~^ifjRw%o)odXN!-18tYpyhO}}eO zWfN&kOZ|tvs)h-R>b0* ziWhye_nq5SE(}kXE4dCXK8o5ODBa2I|N1iK{za=t;>Q)ACQi-jh+-83r`RI2h*Wju z1ier)eD?l-W<-KM4kw3?8)B~h=p|)1g{)mw>tz>9!z)bo9NAW@i~6eS{7x5L;>lzr zWCZy8hyo#!M!Mt3dPIWd6~u5QoAHY;>}Ng{gmOOr^d-}ff>H)Q<&;v>Mv}JW^IVFf zR3Q{S(#E=d|M$mQU;1|Qws$b8%OX+E)8B{ZpUU(eV%((DB7w>7Npcs7olxvlj% zoixX=KPoeU@msBp#O!8lytTjx=zaFk8!vtL>^_5r#qIEs)*4hODK1xqb0!zEv7XFt zG{ZJ7T#VH&pMPz=&H4RUc=mxL<3xAfo5nu1-VUz=F?@W|t_X4en(P7{sltP|-Ul}) z0{H64|J^MuYvFg8FPR?YELam+*BTT3zFeoCiThlNq9Ic-E4=16GKC(|JBT69Tu;OE z%Mr!S5oUM{Nt5p)C6%t!mEi3L=1^aWqY-b^hj?8!vFv|EJ>P|oEQPtHI9Hw`%nb8( z$-xuYKG39Be|-2eoxL8ID5mw0p!}f|5+0$&6j>v_=fY*L#((BZZ>ueC^cqp8z8Z;< zwz@#Lg57ZaKCwS$k+OXtLSb-t@v0){F;RZTjA@&auVy-$V35ic*G z*>V3U=;LN^2Qu5d_;tzqa33Mmn;*1J>|10L8a3>}No`rr4+@LS`x;uG@&$UarkiKQ zrgZT)iNDa>|NDzR`y%qN4zy*fsQ4p=z9cOw$QJ0kPXB}Fz6Q@zm!9-v=bkS8kHZam z>~TxBA%9x4E$-U$S6VNvwd$6$MJ>Bb;kRxWxMCdZVz%=%4Q5Z74{oPAv_=U)nYPUtc*ZE#9U8SHWy6_ zL3Sr_tMwB0))?lMy=E?MW|FAIXN$iYj`0sAL)LUH14jt#Y$6) z-I(WZy{v>;uf{P-3SI5fU0)5;hw0WLT}v2<>Hc9vJCWD3SgvNp|K9h7hCK;|+PA=o zqx&Q8^`BKZDzx9`^6TxUEYgUGRIQh?TF_=!{7P~9Er-E15rZ>cBy3r_Ruhth$Vk;o zmrDdk^p4VU_ciOa;NCiT%j+$?@eq*z?w-);K}!4L{bP@WjCKAvBw^VMeRtfWy5C03 zuh1uVQdEVw+L}L{{rxAmU)melI7JgD_-5a;4dMHvYfPpFuH3RF+#4YlQE{c}Cr^G3 ze&o(R;b~r|_>wWEn9-4y3CYpW^R|cq(dW*NjX0)2>eGPo_ZXg~5LNZuGvy0Q_gFkT z;9&5xdOm~QyV3N^Ig>S7^3yszHL($67uVnEO8*I0=(O98Q*=M#@%zYI#h)4Zu_@Yo zfW{5!3+bO+)|1pT!glJx33nJtT5*>y&m-`U{&s=6kpKnq;E&X}tIf$=aWefLomsjw ze9MC7Q~UFY)I5Ka)TeIA`c`XelyM5gX1hm~sF3=yKTXwUS$gi(M-9g|P_Bw3C?0Od zHu+L-ny){iQR6RV?#ec4m$MG{`-T=~*T%_D8K7zm#l`?U*R1_=WdQq-#e_qWPg;RS zu(?AWzN44DQ$-M8XAOCriZn^$bX|NIyaMVa=p|AcLreddqNeKCGHcu z6WpEl+foe;Q$JfsHE+eVN z=tguS2J@1b+E2_*B$BFb1tTkl)C}y8$wHJa7p$sp584crJQ332+2eTcDfsG>9HX(P zpp=v#9hduq9znwr(;ZeJa`(L2psz9PXI%txv77vJG|qNk^O}A{o4YRr*q$wl(`NUc zQD$zdW>PdeuEQ)7kHI;>8Dp@(d~i8i^iU ziItlt?H~RK>L_<%qf2VF*Oq?ue3fa`XJK(~TnYdZ3o1OT5nT-t-+VJ-&#FSQ+Zr;&h!@uNv zi3gIb)5P(uR?lY?0{VyPnZFL13Zt=Ti_nEEl-%!a(eiTfFIXqC+0$2@C)a3iC0+<- z;jIex#%!}5mtK#>9knblwpy^etbdi`xHKit^1VN_tHragwUto;{5 zag+SpqrtJxzV7FDZG_w7N1~@fiYpY|(Z|O>{qc@#2%2?fv~tl3Wux)iy%H7S(9)Km zbqRNhU>v;FYSYY|nY3wP{#Ts?$(#?5gF3oO;o}VMH@X&%$9dLA=l_i<$-lR~k8Bji z81j^!U%~0+_RxsA{=NjY9+o-kQ*S&vw}LJiKl`(k5VGqw?BZat&+Eh$va2qbZb2k* zFkh!tPDq_7UD3QVV!mL@aaEM^X10aIQDf~&^c|93!G7vs%Vh!lj~?CiG0t}ft2Esm zItM*_W1Qi{@dI6Y@qbU?D`e(q!HqZd{6U736+2b_m%RIui_^Kd9kn|bto1wwT_ek% zvATprGA(`QRD|`F32_*O0`z1(X4YozON-s(OmaFtX-^avEzd{8N|GWCu`QX&f9Bz* z$IHktBF#|yfM3lb5zo*NVylG09#hj*|c<<+?#~q3@#vOOEb?G z(@u#LO?cH@H-PThV$bSphT)ck%7DU9zC9cR!22E3ro&TI;|`I>bsTH^NZ?}1R2Cj=||n? zLa%A9`y`e4+`X($i&#Ojxk_v0A75PWfRm1&$fWM7=FUyZAe;MEC7}MHHBIsWeWGQ< zn=cMs`wIGxEO9UoU8HGr>ul+{_jlG$acXB zCUdLxp6PdDnnlZUD|guk#YF%m0@KM6De>j zG+gdLM^->24aIYefdnJ@Mc}QQppT94jzzhdI?iAFG~T6aKF{}CbJ(N>kKREm+{X?CnnsJtapOvHJ{5_8eU=@hY!K zIA%3JC2=xw8N$y-@Bi(I=yvw5NS$QJOBYo(Ja)D^o49ciQX!;b={S2B9rZJ2G|-X1m*rK0%iEFaCS}!PFy$lOSi&0Qr6z*x%e!bgY47ke3gKCvFp^CVGm>$ zaWkaz8M`|fG@o}ZC}*)Fc-|kg0;2}H0NSiBKK8d{fb2~DWh4(5-HRbC^}TOvy~Xho z^?NHW5g$l`XB*V=SXLi4W%!;L4b_^&G;Oz1cIW-vWn1LZ|LXedLj{BZd#d>1Z~%alw0OD|Uw?UkC&B_rqIcdvX;Nfc{gpKa~? zZxtjbPL3(10n7r$1)wx)D^36!ZxFA9^4+ECATjtzGRrAGH&>`+5%5GKXc7B-lUI4{ zQJlwId<%N!6de;?3O^6(6qE<*|#a9XrYfFMp-_7~WCLp)w}f z3hmAEzxrLd7xdUzTGs zt-!Hc>jEKrN0(l|&g-Bc*TO!H2h+C?>n;f3mpILZX@RFiYx*BgGP;s1THvK!omj@c zCJK@4MZ>fDi5UHQ@F{)ebzr;-rxXjkb0D1&){agcBP%>_w~0ye(!#hlqTvzI&Cbry z!gHQDsEpV9XPK0rbt{zW|KJ6x^x=rn=TD~VMR%fDHnfJ+;b524guR94*ncgUX5ou7 zjs|mA^hdC#J$wvOJy|~7Q(`Tlub$x^3cl`XxPl(Wkq8ZK!M=po;a{nTuW|^@Wxy)- ztK^|@fjaCek~{MYRKJd7Z_!*LW!385-YGy1+lF6bJt{)GV{BJ<(2ZCOf)U{*Lni$h z|9vw$yoUZH0rZvrkg5K7We0zKDC9l{krZMIg}Au7r@N*W0b5#H&1a{OJ$No~eXvwJXQ1#ph;n zUT6tt>EY;N30eZ00C}TLn@=|qClt?f5$K*COtTYTsm~MW-fI25ye^5|-O)I?9ntkj zRP+L2-~JszXs8i{&Pqv`ac+q znU+O`!XFlCXsAH*sW0l&mH;*$=7qL*(6#4Zg&%@R@B;!VTCY4(=2OnHpKv`9;(BAOx4$7lQ;8w@m_v!z>6_JBxKhu?lj^DD)(l5Em+Dg27 zM(0%Tqi-)=q%ZYNp+9Vqlgt}N5uB#cnR>5tz;pfZnaal;Squx_64S)UJKTQl>+dK^ zXbeFx-K3Lu_Ak)}3HiU|IK0aaXG5po`MU&eiQTy*UwkX_))?GvfFa4Xu&#ewt(N8v zz+{|aO- zjO#Z(HvBZ^fu$Li8P1(%BEo*NC0Cf=>1UOuK8kES@k`N%UclXkt&rh_ghraO`Dj^}9^MDuTG+}hO^z}IK+awip-7QKj+PML_d-X7IBbMp zMw~C3XRGHCT0~y{FX@i#YTw}(x_}+Y>T_PC*Jt{%wHX|&;TostG;c>cKmPz&VR)Y5 zzP{i;f9|iLO$ZZK%T^RB+uzD+E!sQfw$1iyWQbN1emIm1A@TrN4v@k zsq@R7Fm!HeI`gJaaglF*lX>Hdiw^t(bZ5jhkbDbjOBnV>ntUAAE4}%e`OmqE-EqZq zAP`#kmZckV=3Y+=5v=cVn! z{`tk*t}?feKI;>56izq)Qc|QHW4>l93=~Bt-3Kep4kLw>Xw2FX7z458MO>R;Oq5Z6 zwml48O_=AH44l$!8XB!DIvU_C3zNDjQ>7bc*MUM>5wSDA`)$h3&YpC2T$=A33$)D} z8o~^5&muvUVKqj;%ezdA0etd7^hrDafv$E>(lm86!0eYcX(l9BKZw4429-r-m}R zz`&8W7UpoHV8rBNPabh1+6a6cOII_{s-~v#nrN6{S#)397MWe%k`4Fw56E9jXmRA*=s(Gzy;YFDAxCojc4K3h` zj;FU9G_t9md^Y#E43kNy+dTsgB+-fLjNyPJcJrPXPCY}IL7>SOxE7JbXXf^Tz}xZH zCbRI_X3>d_rFI0G)`W0n<~Pcc5tjnZVTA2sF-G77J{am^UcWc9Qo8P^a3IN2VzAr& zCF_KJUXL^EYsz%ckS|RmeS7;h(xsN=ux)eMS+Q2$`z2$y{!e>I#NWSeFgKP7JPw;c zLytm*&~i7`M=J+6H3=s+zi+$0G*U+G>FFsd%6_y);pX&bL-WQTZ?ndo0Vho`g!S!RH%VHTNM8TSL4$ei=5vDMmjQYaNn?cyZg2mDEWuomuk8{w<`ZmRJ=#ELLBrdwIXcS*$4oW82k*3%Iwdf zW;ys0#mzvtdQEO091`ndutaWTD0U=v>FmT)Ahuzu_jA{F;9`{TheMm$e+<1Y4=?b% z{@&&7S~)NdLWujk(4R+*0~-VcGBIn_COJ)Dy5-z&Hda5~a+zn!6*%_U#uWy;`vo(J zK)Yh%QM`Sc1(`<-q&8FyEI}VuovYE@^;j^1IR8=G!x4sHl&)4MP8JV8x(p7VYhEp{ z1U-lWbb(mxfeVdgJdb`Jqk5m;-Gxbg^>6Uo_NgSH!wIm@C+;Z0+$m8KGV$yCu*-;k_V`(h1 zjZQsNL8Ivm%{_yf{Zl1m;DI*tO8zZ5M1)dhLZ(tNs z16cloS8vphAEzheflV61gFBZSCv^lR<+vbwuq%RYY#fR}$=@>UuW=~8n9+j}>3KMK z;pkyz(LRd$`9Xn%uC&b!dh_aLJ{MfbXzG&dLx8V=l0P=G(~~$(K89rjJ}Ue&$?C1M z2ADDpyPdTOK_jP<0(Ouo8S+pn$Ow|;VgH_{q7JE_aI)-OkX-+B2jkah%{oLLuQKJy zgP4R44GjfOJWrlk9rOi+@QuK)1H7?PZ0CnGBBvMll@Ce#;d-c=YZ!=_Z5l~nm0^nv#xthtQr(? z|5#6Rjj$8U=t#?|(1;eZ(V;(ViF)F)0(TT>I#c!9fs#W9F}$JAaTtYyRf`z(c6XCm zca)5!d|l9=n1~vFOdgWps6@=o&8hCb)g8NinE-vxWmB0xCS`9NZvq$0Z z&=6J4-glj+Pm7x4RMu)bq(Ih(NEEjuAb|4A;& zp~-P{97i4h(cT23l=Hpazje-L_GCyojiV-{Pq1YfV8Vb^9Vsf_@cc-o$3n|kYEBM| zGK!W<|0Z7YQR$ZGdp*g{hF_A6Mz4MM=3u*M75l@ym57DJDv(6cr;R}ejz=G(w?oE)z5e)aBM@Xw#ek&9~(%Tw=~7HBBv zj(rms3ZwD4BozD+l0Tg6pjrtUw1x$%YGV_S(Z2FS&)b_^afB!A%GIkI9)V4tpEMOd zFe-UeWf}W$MCrOPu(hdxFqMrsL4Z=E!lyZ4)(`T;=<|~1r4*>Rv-hZ~jlSvIl>ogm z`T~Iz&P;?bd^|r-I1RsWTY%>o|_+IjOAYDUanJ1d;WxmV#hjI(!|6hNk4Nfm6w2Gv27n;%)>JL zE*Nwub(%PesA=%~be3>L3P?(VSNQfxU|mzAN@o*}$-5n}1L@NF%1!r)X&^uWTbf?Q zto(RcnS#gUx8}fRLzw!uwzMfZKKyvcYhaYu%*-JA*sZC_N&3ZN&d7*gM>6XKPmKy5 z<7po}wes-8n)2!szgs&IVSiQ{4Q;O{279wgG^8{}1T~s}a+HOs=?q{Q*ZB2z)~oYQ zd?3ZkD4qGU>cRY8P3Se7fQ#vy>n*s({7+k&k6v8_9>6vh9qJ=%CG0?MWfW`oX7#yx9pPD;2XnD9o zRs<*mM=jtC;lZ`#N!hkLWSdlRfLGAvn>S^krU<;O?U~TrIAl_Z8(RF{-mcb_cEzVT zFmyM(Eve+30ec#{+?{HUZUaa_z>$GrzLG}WlFin%s_ICEs!mZV!qBfs(;jptuMtDo zPtG5h>$k8d-{S?gCY2_$V)XpCp`xs+H*c7MVP@raNli_e2eZWhnjG(EzwZ}-ZWTl- z(A5;bXkRc~yQzF1R)w*QZH@i18mJ*px5w9}Yk$mtI_x$^mq# zRsAjhIHNO48Ab`3BsMB8U~VIiCg7ifpmmU@Szz!*%|>NSE%ZzQkbx%G02^~{oMcB3 zE!klczvNcY?4JX(5K)%Ph?b3AA%z|sIZ)(D<>_Q^ZN=8xRz{8RGaNwKMLDs$f%(nv z$9{s0azZZE9{hOMn^y_8{Y2{&bz%f1oLs&N&xkFDjWL8lkkFZ6w!BRRly2ae=6+B< zVd40DBrA{ePe(|yH-nyq+3cTbJ{g%y1KiV4wZMRVnv#(N?ppJ#-taLz;mWOe1?uM^ zCZC(ogmrgNRgAY}Bt9KFN_*n{iQUCJk5lrUxT8N5sMIBTsuPH~j-6^&V7-lWZb^hbYbE>6<{f0aj z%pF0+M?~eC6meh=8aslV{~2`H?MWO{cV6dtP9m=Z8g_3oDCX*_#)wB8%+9Zk`tD;e z-kf`$p5HrK>mkFfaXu}+H_a67yg=6{DFM*azerXqLZaCCm-q1eD+C;a%u?5%pWJ`{ z&Z?2NtU>)uIM*|!_ZW0S&t}str8Ttgr!#4&_KZN2f1N( zrf=@{N@DzA5GtImR{K%hJorD`aVI7Vg?23*rWN1H>bqSI_>W$IAhIhWuk&+}CL?Tn z=%VT>RyNBX|Lr)~wGJc5k}pv^E&TetY(D!l;aKW=w?XQK3TMpmsS5YsejxR;a{unl??-vZ0nscLQ9CTJNs z*Y{>Eoja1&0!opi|@11v@C|C9eNzAwJr)5k9@AdC^ zU3f#yUuHfMSf6Xx3)m7MIXmQst@*QCz|i9R?S>*v*7M2@V4%Oi^ltb#65Zj6-PpYY z!jN}&9?f^Tcl?py&I1;FcSHwbW*uOX^Y;NFXH4+^^Wb`%Q(0$I)sA>W-7)t|V|dX> zIna23T}s$&f{(`BPP@{hW?jsN4a~U2Dbu2mpwWTe$zCfP!>>4laPsG(?dHZtzEka} zN=zAq!Y3UnFM_C7G+bO>H+#cOLS!K;@7CZG7C)7~_z3mXW6b8mkpd^bHKRzm#Pp1e zsjz0=`pU8=LH*(3!V~Vg%27v1aKDchLohMN;Co*dhtq6Z3%``7Ih9_oep2#J$_@0M z#UR4(5U z1~KQ+r~LxITl>C3#+lLD`pt8b_02n;OP6d&ph?@(az#{Bv?lw#jMSqgBdc0%_Z(zD zdA720T`&Q4pCUZ)lS0BNNtP5)WCe=}U!QwwdhHtZ`A0Y^#8eNyjLg)CNi)Ne>xJN+&VkS;vtPm3Bn13?k8`}CN$m=y;gp-m%t&NlMAqBd z7zRuCLPIbzWAu^c<;D})WBEr!bQ9EkE|CDEA0%i_d%Np#82nQ;zq-*xPK!lxzjd=?;v?90Of zOa%ZhA8Bo>rRTq{^xaz=vjmvJDgKE_+%fmDAYS|$xz_dTq#c`Iax-gJeTmFb+)Bb+ zG8n?P$9&Lis@F54b*v;3SB=q&2(cIHTVQu5t38D6f89!`tnK{;PSAS7d7a#7k3K4B@+uyQR|~ht8-7x7&8yye)uRs2-+`M z+l`7jctH(tGzrKrjVjBgp6gCjm{l@bywI^j=rAl(o9m zEqwVUE$T&rt=Zw#^=%i>?m=*4LQwZhlsX)hFO)hq?Hugu%AU-2_Vv-e4F|05tjm)p zcgw!pistjU|4YYQUEGhJk+!1TI5+%~NGVVWr}+Q)w`vo5>w$czx4+2f14q`1LOi~B zM?@6Kd6q7}+~--CD3&xOuu&s@#Mst7$*23tYS3bUUgu=eEn-BF{&|A+3y;F>ikZ6+%>QfF{!5;L z)}257;eF}pXV#Erib6YHUNF9KiZPRMThl9kIvw5pT^qeP3+=m2^lKlD0$!I(Rrr%Vi=ACibFt!N1hSk^eCqm1vY;mVASihY~D4yuT zaSemdW1c&RCGPRI>>9d=GX)wUw^dy@zU4Ay*flD=OSy;ee@)lU?bZj!eN+i_7Q@yr zl7S*F{^qMi3t=@Ze$tOG%^w;@p?t~9%>%)QH_nn1xG7H$TVKZgh*ANXiRv#!`O8jO zHEGJx(unw}#O+d%LrNX!5BM6Z*9j-BGGqAXZSP>@ z`SEF3bXs2rZVwQ1tkNs<9koY532$#?^ABY{>|OF->N!XG4*DlX!P~pA+@KjZf>54S zJ%nCbu%@g}>MU5eH3;in=t@V&>m6wFrX^Mr@s}xa^ZRJ2H`x{~#sA#^iagPYlr!<_ z9|;$?)j#?QNd3DEx=4M9$fqT>3t+LPha1c;Ha(-R7#Vm^OqTg=6CKt z{DRHbKWObp*Gh54ClBSF#9u`dXDHx8(5hQVmAR>&GQ=IliA(sNY`?my_O*6k$b$3L zuhpzPCyA4s+61-&N4Bfot8IORrHtKZ9%95`F}1?tPRPY6bm!FPlSAzo3%CMbeor=+ zPPo6w{ii@DU2dRw7uK{Jt)cA)WB@D{m+G9Ia^oi7O9F7YKM!7`pLmXRb*IeDc5Xkg z6*AV6Zo8p#Q_Q%3HNvS0dkZ(?qSJZ>eGPgN_-G6)EV^(Eaa-&R!8qE{ABFTMcv|>| z7%wHY+&o+xNQ(*R&2xtK2NCDa#XrUC^JVNBo@ORGEUr?DIqL!@^lzi-e=Kwl&}jp$ zJ=?9o{L2479{hhieRW(^ZP)bxN{E7@NP|j=Ae~Z5NP~jXFo<-Qbb}%)pmZZrA_CGN zF?5HtbV+wN^X<9c_x=8P9)GvOoH^%Q*R}UrYp(@Mp$j)&%Mf#osbi-je^ZeO zjq`qibN-_j-j!qVM=*)A3Tt2D!YrNN_fC5A*oS@}9S>R>6JZ1qA}j?N6WmB%vQ?wm z6Y^jmJ9bYY3rY0)DIAQc-~Jtu;eeJO#zwfF6?#{kBHLao{Ll1=+xSgCRxT@%fltlO z30o&&i|HP>1gmbCseYNeZJfHt_|Dtb`WL9a60oH$fK{`%zH+M%2-7eI)m5^w%*O=t zr_8!1^aRI9??oR@{x+^s{Cj$%MA zUxP75v`oy!tB%4gzpiOj^D^70) zBRO!^DaNhn-Zab~G5;%zayfr-bO#?(D7uiVB>vBR4lFdN-jckI!07)cw^gxXPL7uh ztnv5A0s1vf_Mk;@&g^v9AL>mJeiyH}i-(d6);x)N6e?dLOrEaaz%VW~d&)7sE){PE z?!MP%KA~$yzclc-^qC(t0hN=Dq+d@E}X zC*D7-A|<*vh=wB-sz2P2rvVUgc9)N@MCIJ1=rWanjZ{!uU}U6`u16Q&tAdU}bm_XV z-Nl(3_+N}W&0PcEGTM~Y9u2?H*B&0ifQaHEKBuGvwMk23X|of_>lJg6OK3^np}xO; zs?u4LwtT8WbaJ{)Bj5UeS^!Jd#BDl7tIz1DH1YUupX`>zJOBPuA8jXJO|QKF`GZ2K zd$&FTqa3T8&-b4?Wwa>|k(h!JdXanoT_p@jp6yP!*k7DozWVS!zK$ObsL=4D*>&E5 z7Z@%K@)ntPt-PGRKBj>wr=XzU-3>#7 zm!S@Op7!(}JA0nS)FOv&E%dtv+;P{*s6O7HzrtlV{dmUfa9c@5MaJYQF5)W?W^l2+ z#;g8ZjF+Kl0*H1NY%Bl-YL!*N_^-*!ht>{^1n(8|exl?ffm;rMd`nmgL@rc+T_4Df zc$V{${JAE6lJamzHxSFz4@IwhY`TJ2;!UuJ*gXa&#(Ux%D&)feaZ-yve|K=e-`K)z z(D+{Bs;tubpuV1-XlROH=)nOI`JOw}mr#_xFIw+bj!Y5>j*eCb1EH4QzBE}SrKay+ z=pnH0nZ7<2-sWStbeKhz52f}Sv3de`0!E~WA~LV`Vn%EQd+T~;2o+hhg~zn;iT4AQkdByGTgrY{{ydEV=rxZg3z z?*E7(MTdO&}bUy7FrqVMkEG)d;<1*RQ{xYX`auN(ph(hN+fBx)?K_Q`s zqMs=`J=ko?$*&GwS)qKz1{GsoxgmD4*9lAN{pV_qwE0yBlrUW%2);82-=}F$Y?O(T zy-(yY1Qx;3bU+KV%Robj$`=()HqG-<0<(^UrjCGl0R;h>B(N*^%4bOY=zV{>i6SnWbRZNA#p&7AEOMr~I5`*t80VI{3PgRhRJl2B z|D`8RD=fT%a$73v*7Pkh*lXNOma_P9LqS{%aCG9iZDw!cpoUPl-G!N@Ue!cVkJ|ul z!q_v|InZEyv*1Pkk9yngW6hs#4CV$_!;Tsc6P79$u?4A)_u!F#jPdl(P>6vESp)(@ zfa1}fUB-<0qE6;HAmAgg#Bw+l+{`3{Zo7u$KgM4$EJF3joM7|!2`Hwn5F1-n(I{YK zhW}|@0+u=Yq_lnRw_2~^OA!5Ge{g9ACv1dF-^2-4L!Ds(*dI)%g^|H$-C<Te3u+ma!obqb^$4eL`aIQ?NRAL4D zk1*g|{sRc$5pJCka?Awypz+|FgBcFsi1YKLu5&6r@48HI5NGS?bDR{<-?yx-*D;It z*GvPz&9Hd=g6Q0?g2xxacUIJ63-e-UW|{zK2E+H7Z0cv*A>srlZpnup9R=vKL&>wv zv@o#fz+FvNsblmp=nTfu!-5y^EzD=1 zzq|Ige3{ksF5GJO>L=u7U^WL+>c56N@yOf*FmPb~Cy*Y8U}a~^%FAQ7U_qR1E#1`7 zO$bl8K}Qw@zDJlX;m!WO>v7cZFRvD5MC}C*-u4b_{Mo}N0JGI}v~BFxnarNeAK=ssYS9#NasA=Z#G zbwYTt)lB8xr0&B-ey#uG=}OpMQLcDm%hSRxgVWb_Xs#MFkF%50iJ3eGy`C z3cn>>U@3Ayz(MdHToFO4lIdcrMs$sgj7*F|Ai9ZgvH$Cn&l498rkj&zJG)nnGv)g; zm5#lZ4aF$A$>qXh#a=TZylZL{6Zqd&6#2}pnyY2o>L+u*Ug$wki#vY;7Y7Ep*|@9} z!@kDt&cyAThx@BCDU;Q}W8J-XFY$PH;ZL5PaP2L{W4C4}?>HeG0RaJ{idnz!5SpQw zv~!tov1fiJi1x+W1ZwJE5S)?_NP}A&p(55@f9x11?m|@Uet>PTn5RdrC_DZ3NzZQA zFp_26MPWGatiXv2<8_EgvZ;wnuvw|qb2%s&6MO0TJcyP*|B?jC5dzT?C(xKbpk7FM z5L_}0{_yx2YyauVlnWiCMqqtCTrVr~IwdmF%7o3@_w-~x13Bd(C#S@C-1>a>knRo# zhl#1T7-&< z3a#7GUB;N^_cIN$N^+MKaZX7WXao_o?n_Vn1E>&No&75PrAk!bmP9~!ZSG&2lSAh* z$7q?Y%wl)aXNF*#37d>JtLorP7X+HI?qpHRxuO+)2h9_I#iq3=A{v{2CXUlTkf@ro zvkngO5bopSOk)<%Swux`@>-N|3#a{l^x{F(tWA`>gmt&5Duj7itZ*TKzf0h^eFaXM zt=#3m<4s-x-F+2Ou^=(Zq9h)Q1X#CiV8sKXvung6e^PE26v*p=-&-%E9La-{_GU4K z>#NaudS=6=4-x05Q!V3eyI6uq&G&2_jR`n3h^8h+Pjo|AYaxW2uo#RQ9xe6W8ZEX7 zk+;?p`yl4aZ>_yMIKaZ6qDPR|G@vIl`eX3<9+H(>8pU%w^=0k)h0E3R;VUw|o3hsT zt_u?0tG#RIZs9OjP$tzxxhk+9ZGMz_Q)w|HGn3oBQ;>+6F?Be`Z*a}`gQRhS)@6P5 z`Eo7BAA4I{-;c(-b}BBl{#!_XUZWr{Kl@%Nl_@sb6xuJaT)E%B8Z|;i8S>6VDd9nj zG+$X#-Q5oE`F9QwxEzU9&G$4-ZmwIelKimERgL>uz>|t>or@^W%MNT6ydt8akbm*4 z-Mp`yONmlI{Q{|}`Tfk=IwefKuEJ;{uE~-Z1m|V z1<*2V3DInCmh9+>MeM|V&I&#`y1D(-FNz+t9GYEOk(ZLXL@#rdp8H(8pWD3_y34oU0-h^3`o}Szh@BNJhQkOl$FKO(;P(SrD(IE zb#`{BFfx*d&d{ zN_|FrrV#`L!HHsC@gNG>Ud~G4v0jPEL`1ygtREuEL61p!{S0`LNx>{OdS&b>5#77| zd=BnHx1rC0IUfmAQ@hyN4z4_lA@SEI7L4~cJw!*9wtOibl{`WoO~svaT*v=$51Sf0 zE9Du~O@2^+*1i`^T-Eny}D^9we^Yu^lo2vJ& z%*@oi4ii&Nl805%+Qru;vNTXYkAo)?#MU8i*Pw0mG5VpbtYZ4FU!S8`(f^`il!W6x zQ3!{2C6oclsmbZX4%u)o+R^7>#^aMYWE&eBZ2E^SfGMde&D+!Oh9aX4Wbzy4Tyij|Fx0ni3lCd#}(&N~2a6EFZihJpE(F7{Z=h=gM)r&UCu4i0@g+*># zsWPDCPHgMS`2L+7?qEh9Y?8{RCL{*QQHF8V_vkf*iyFRx0^&o->JV0@u>xc;kr|AV znoj(_)>`-lvHO#Hl~EY{Sixs;dSfHc(}a`!hf=+JwxFtnh-q!_-taroH~SCybiK|) z-xVRz_2_P|bHYphKi(sPYL~M^s7~MFzJmfQS6u-_%h}o4SE={zY1`TwZ&?d<@R~(i ztK=D(zMRWd_>50Pl&R5^47$Z=uhUt#lQ`4h;E=mqTwfxX`>~GxB)0B=jiu3CW*3}V z(H9qZK)9z?RV6~icfzb?pBQ`w2L}gq|4=zkuUVRMkzZ|W+05@_KR=o5*qLVq@3Dn4 zaHTGGy9p2o2ruY6xYtKZ896zxL*n|qd-Y%rZM-?@C33Wtb_w^=XU~85;MNKWe!bfZ z3HSsAsWOK)z^4R)AN3AOLmz(5x3iOt(X97y(nGQ6no&Pn42Ub?ICa~ak?A$#l}EIX z{vqtD|D})n`mUfLIVad@3offIaA>yv3%&^<^v3m#a-j46rkV`~+TUL4QfucDCogC{ zfO{=+@vnbx#f{3gX8Vzf$i@8#@$*D*tJHVh_JM`)Zts&Cv|G>h^}9t~ra~Cxz&Gta zfz0qvt&WFfPV+CCS)^TxGL^RXc)RQh*u=jW#|=-p!uzhn={9@G7&pjVNcHVgo#RZg zKUprea6RCANYr0*5}&JsZtm}onD98jV0~xj=WZ))%!qymGKEu6)cLm1`h*A3dB1O= z^$PSUwVsREzFCovMB);;Zb;~Lv?u>QMd(xEpT}gOG8cv1$3B$py~#%pXLh~mMR(_+ z__IHrBkz<)zt?+lNm(VthSHg+Kxh-&7_$o>=-85wlgonc0NlDwK}+DYGSHjpxoUig zthoQt_te6qk-J!uxG0q}n=;H&+P=wrwA+J{RS*s?iy`X~+2uXoT*ZrZE(P@-^Y+$O ztr@QalR(UDI0>!C+H=+-cB_cX;z;DA`|dTUAE02enyLwa32sa#J!!@5&iUf^A;yir zQU~&pbOCjkIs@Zvm;D0BWKO3gnexht83-vT=XwpY&8NBQj-YNjpc8xyaf9GOZ9338 z!)s+W%74%$pr56(DQxHB!py-D24WZoxQ!wrBH;Fg=XMZh`k8?MoXv1W4%uKkfu0i* z{lLioYMIme4+h~98(YTDuln2no=?$~9o`dRyBZ}g{p!_SP)$G0=a3A4R{HrRNFjd5 z?qr(rTF`p!-2fN+$a!9KW|ey#+{9vAh#ryiTa%Oe@G|^z@6rahV~e;&oHGRn7%nq*J2qd z+D;|#@h}dHfGsqf-Cr1jhv3((f(^hg4zXm&`x6lrfeMn3ot=paT!rz7ne6^8J$I6R zB;hY?U&` zSe4NW3dTBHkKN~CVuSaEBG|Z z1!|F4-$?_20`7cE`_|givj~4fZcGpL-d(t}obwxh3mlmt9j(^)F?icY7J@E9R>bK& zjL^(|vrlzgRE8z#2&&#vn-TelOr?qpOEM~tP&)DM;9_3+4+{9^|JP)Ka{jn*6L_E_&)Su1qlO!7WL(wW3{t6|gfiu9XG#BA;aIE|r*^tA< zSXjDJp6HP0avu5*%__Qnp}maGKlpfoEQ3<>#!0>|O?Ns{7u`L9PSQg?wiCSr)r}tw zJF~J+woaEm!P=m`kU(`u!OJDG6SQRZ!g+)bD#9=r%#QXbL=6-PcCDd zN?#JZgiXz}qo>0^IG8XwIIy{P;o^KA`hE+wGA}eMI_%=xtsmLW4lR)p(sT&=?wRKq&l0=W_ulwTL;a?&P4NSnH>NC!u zAr*-Korgw=eZ@bQ@X>pUxeJ66s6R*@-H)YC4CgTtdRK7?E|r8}e(G<<-B?@27^=VJ zYwk&(EGu%6O0b+E1a!~+oRkH{zEqY8rl0|J&n)MWc@uCZ^NSTks_E;8DrbT5f4cfw zd0)RT&HM@KGYzaXNMuItyXTt-k?o>-&EW5ghsIL#mQbpK?&y5hVYp9diwU$v!f%VR z$Ir;FV-fiwgaraA$6cXvAiT|PII=?u@gvBsze)*ZzYKcsDW_-XmFqL7mF^+46_<~X zFN=sTNqe7}pUlU;c}}f|;sb635)l*>V+FH^u*G81P~X4D665-`3U5~TfZcDDLwH0O z=f8$9x7ln{@}1t6m)$w*=~izZhBePGsmLlC{UPMoUPR{PzgG(FLvuJ^0IKIU(-d=L zxgW1kx-Kz5daiLrW)n?T|0U1I^w39df~9E$%vbzbgBP@^?p)WkG}5X$3Tf^h2DHwT z+Z!8NXdfT(-_Fa1hXZO^Dm)tz+i)as9t9l2hPdogn){R=i8qjW(P7R3XWeY7B(LSr zT6jv^j zYUZ4^i_M;A{QT`&-CEdL7eK(KTl~JpYjghH!Fp5=k8;v1R1E2s!+B6dFG_d(rap%| z$Uyr@%Eo4cF-3<;P#(?E+QYp4=Pu+fIF1(I$v|C`qSDRhOHk1_;PjVsd#r>f`t7}o{0Te=82az!U_#YQ#MbN4qTu`!?5>s{pf zuS9PaZ^v8bB}!&y_W`47mdR=A?=Kpi%PaPVa1`%zH>N_Xbno*M1mN|d;D2l1a7}>I zq0x>v-qOV~$NHQlJDW|X#ved#7AzvUa6zvX-j3+}+9{NN2sSnPt-|q$L*xZA!C6;6 z+??zFo2zI*1Depo7N1$qeAf4c9Zq4n62ih06m_=6joFgokRyTg0FY1zKoj>jGOK_2 z==BJDKe!Wd?P6$jcx5G8fTjqBc{uQwn1iOG6t z=YlP~KQ0d5a11sgB_){J6%R-7E4A)89#c@P3o@%@s^#m8!XA%r^QX2sbH{-mvbmXA zSP0}YAW2^IyG=xiP=~JOh(h z>$UvQswyaPBV<*29_I}9-Q#};`Nbo}_TbQKZq5ta6e5^H%x{cgbL10V8|w0refHu-BaGX~DG19wGq?jiS8Y#Ee&04X zIEhm~N|bv3{Dx8jFL*GYe8ch!ARs6&FTYNE`zag(EG*ea$H#C9(a>zo|Ao>UPFwTw zaxS-H5YEv8r_$VBD=;O}agToP*8a+IKm5zu+Q%8ySKd4VB`fq(nC8I?lz+c}_dUqN z#F(UrhPL7eSd@`~0nR(7^|pRVlVN%A0DMz! z!?mhH)!!De%s?mPudE?E_cSCpG_<)zCMVJ55l;j}5#OL8g$UZR>>ODVXe82;MC4pG z1urhVU#|TEwh?omR|;N(+O%FmGWdfrD?uT;ZmaDbKKbzYxTa@8aU438dG zC4(Hejene|JiJaqq6lJWEVao`#S!qNLYQsoXxn&8HKk3}dBiWWP2E+*kE0PhYV$9I8&QqbBf$jWjS za23FFeK3^*{}nz7phZR~rs3}gD6c(#-bG-ozF)=w$>xocL9J~2nHDM|jMsKD5ztF`dAY^@2_7L>Oj4`HnANhUEn>iTP9>4V}-~-L824 zCIe1Rmr2hW^o$IgkKm3DM@CDi0MA|;F%)V~qm9+ikIB?Bl_AGiryv#fQO~^@gWoQz zxUsnIQ{IO(MJ7F|5Y8hPzO}cPj`li_6}A;C+h6KFQfbDrI~W&g4oj(pk=@9D9<;Qy zB6dDL7zi8g2JCGaD0JO`ITG>+FdTFKFt7(yK<7X0XHxoMJzNb*Ue4pLs%mOcJznc0;&@M(2_Qt4*a=cU!v`E60VwD1I;^0zl`PUT0s zG+bMc+iDZUfHlLo9Yyla&P1D4r((h`>-A>5*w-Ogx^y|;%pK^Zv)a}qKLlXn~yqVHjhR*^gS+d~>2Cg@V$uO=Tpa2AWnA2?9kl*8 zs+`FAfLhhg4m#4HVG4cLa6}LhS&9eA*>f0j z490%add*t9L_0e2tDag}T|MEhCi#jm8_s)(^gN)@&MoWP6r<@@93I^}KsxA}NU0 z{c{Y`{RXg7Og<+REul1~Ct>2(DJW7SOAO~9FexTBj@eebbw#fWQ5p*QPCMN2lDSjv z@SY(J(?-olJI-Abz$`yNgd^*&$KqBgL|=r)#E?~QmNzU=YemPMEt^`6R>jdyRBn&u zi|-zrroj2y4$SwrtJo^ZB5jRw5!>7Q^Ff<6#&uOfRR=4qaLO)LZq~E_I0UhGnaZah zAS}~F866B@#oRp8fkDo2E%te5ia-!?(A7*>wsH~TX`P9@4*T&X zz*yx2gSNH&FPJS>Am~XCvC&4=F${JwZb3NR(MnFfR;7)osJoNtkS%KK*fb(IIMifl zO$aJUY~RSp7d1x?SG02l#J$lpgbO|M>t&M+cklYawHJ=^cXjlbwg%BTg4I3lHTPs7 zzIQNm@8)Jtqg+biI+&9h$1V4p7J4_}ZmbT+EQ_Dl_V8r(r#6IueL(1-yu@P)t?1ye zsj!b938%bw`NVq?ySoIY8aF09G|OG(N}M&ZRUwX^o>e%(T&>1vBT)-8_5iN++)hV! z#-D$g@7}ICIiWi9^on~luV8YvM;|7(!|8FbVSE<&k$FKRKD-`&6}f=(Rm`RPa8%0z z1TGmAGCf}5m>JMX7Y?tA`>3O=SQ1Lh(-Tauk8`(%@zb8q0dLY{nE+i3Q4nvkarjoT?(vmXNxuHMs#g`OlOh!s1U4mcz~*_J_! zdu)n!rU(ZCu6hfqJ!0{*R={fAw){@xgyxtrPr!Ptc%}z+Vc0eL1_8|}k9())!P%0v1Qlpd3IADic4S5Y#I0PmJ{E#Ny1}l*q0IQq8E(>GGMWc9o|LA4N z#b1%QxgCF^5dENqy69x(K!*XgEJpiCk-*H4<=1bUbN6J=S^I^~laSuDr_(Dd?P20d zi=h4UWwG0CJ0bwC1;S6C-F}$Zv-F()i}8`snG}&W?mpky_R#7z2wF%!$0M>EPV$O9 zAIm@6Yd8cvsldG7gz7xp4Ywt}WOZpYgAnst7PBBByrI5uo)vQ3OiT7Pt7@Dl+;M%j zVAO#-0+MKw&QA|_>!$BY@rM~L?4`u=+GFpp44Pi}zlFM%ptfz#39dR3s+&olO}*Rf zu`U1PZUX!}4LkEz*zss&~mA;t_G2<+uWM$4NBc!TwzNWK^;RT9eoso2x3lz^#VWWqN1ER9y3?P?jq zO8m&b4t-i3MDt}lJyiC4{LJz_1u$HT4rxo#V^JS-2r-DNeaa_O*f22XDVmD;@2M&+3<9c_sOyfui=;|wi*flLjNvdGP+q}w^f$b>x>}!A+j5E2X~nluR;}h z`=Mbl#E1R6dJ%L|;LE0Joc7js#jB9;>Am zOds)n%MJnM_p#|13UY8l;9*k=STxp4fBXy}9(|CbS`ZN;@aw4mNx20>yh1-u zb~#{jlw54@H6#bW4+#d%g}-SERcm5}UhW#Y^b0-@ zheH%IR$EqV=SR7Hcun^112BtlJs2^C7|qmT%c;;9ea|NaZr~*X3RL?AMRowzf2u|s zy$oUNfNbDDKec!UEFhL?Xd%SWxT?CkqFO@*3X?`?DV7GZ=@C$L)&X%d=CLmoZS0-E zM+MME^C!wDv2Joh==ugB53#5MlYjKJ zaQ8-YIEwZ+Q9|y#pcR&#YYs8LZlo=7`_?Tfqjd9;5cQl4`?RNsf!#w5-i|^=C@|*1 zEo82l%BHrfi#NyM&sRUp5eps*h{jFv+8VFz@qttvIwFdnY{5rXI}G|Ba}QNj)s%|F zJNe73$KKtgtIDT7Z13RU0(1FhpbU+Lh9K0Vn!tHlDc!pZ5DoLt)(za>9&pK@Qh{cB(bg`wSpDYba9>dj|)msSWRe0L#-`XO1f!IPBz6aYUlL+udN=G#vmBf|O5cCgKp{9Z2VW7Mv!d zhEI6S7`9yStk~)vv)yiOAigU{GV|)y(UIBlR7ZZH*|s4ZLg@pf!wAA%&veMI^X?~aFr^K9v z3S5y?S7C#}02@F6btTA<+#+v<991Eg4Qjngr&Ohcp<+wREBc_I`S_O{`l=Sl7!~q5 z;e~D`6XZbSu96g79m|sWd(qcY8Vc!qmh>^@Xk?bl^Zs&G(?x9oad;lxb`MR^x|- z`0l|m;-{RVNZ`}7nP{Eg4+03}!eJYmiHRfCDJ``il>ssu9^XAt`lQ{&K|E82YgJ2(QjFDN;Xq7u$YX=$GtNj24ubajR3*i^g)co@S8fmcpj ztKeJt3`0>Bgq;bpgu7AJh2bX z*laHiG0dZ@=<`*LF3_bRCDtMVHj%%Acx5<02=?01_S+@eO0sr10Ea~yKf2A`Vki>1}N?5NV$&ZS_+L z2|OkrfTGlbcC}|CO}IBRy%Qo61KB#9R$PmeLK6Y_(=M}6dJ4?A_`<~$h$<5jZ$(c9 z*6)_`xc@BJ8!pY&VNEeF(XJ8^1!S;bB&0Qbta&yI2agy|LGX|q8#B8?Oqd4RLJY8C zZl3M%P)bG`($&+bsYs|l0gC3fsHo5zN+YfeqaIJ5_;tpM%CO{DRZ+XRxN!5RM8w3% z1WX&)to8=%Qw=#nemAV{5fBNxSNlP)Sdl5`nVW5M$EBcdB7+D)^QzXBrP5sRKowAD%XqF%96i2$g@i%~bQXwpdwAR5WR->p;iK#oj(uzuJANqaFY1 z)qfH8uaEc3w5(1|sm4mrKf>V2mm6PT_r-dsGfKBbwsHl;6a%|uDO3%HyU3j3t@+4o z%oZ^-;};foTTb;AXQW1PnOp7L{JeF4^AK7+Xx@@8S0yUQ9VmZTb<)yJKwLncwFHpU zK5RNR{j`wq4mhB?d4IdMXR&rdV@@I4+~#6XP7dqasAwrot87_Xi<65fpRyubWR*3= z#f3Tn=flM@n{5k%X{|BMiu1@P#?mwVDPz3aQ36Zclp)OrnvNAK57rH-TEBmKL-B#` z3+FZ6^<+aysOB)taDgKkRNQNmMG3GoxKB+If=bruQGcim2w>aU=oLgkyi%fV9r0TF z#%p?w(!=a)aKpO-$QjE>Z5rT6sg<0s1QT1uRDefS)9cXalYWaJg-4b=h*cCEOyrJR z!oylA$u!6^IxV=U3~5?F8~0O0nHIb(tpM?L$Wx_r-xL0n%F4>Q#nle5Sz_Vf(CBt_ zaVcU^%T-UP;qgJLtDDHndOeDOrY)a@_v&{#Uk17F48fHfD-H0i{_Y%30pfz`Zz=gK zq{jHIe+;`vRgC+MXC%8k#Qnra@j|%rBIj+|-{%xEB?@=!F8xRJN-EhGA#8XEnl#yMDiaJRx4dMgiUsxDSo7aSD#DMPp|O4?0M zw!VL9=v~IxC;7uc`^&XWl}S0d^Ki;L0A769!!tpl1BC^(lHAOpcys~8`!OlUce+e@ zcKN^ks99-4gOQVd3`lNiXn>&KCK<^fkN`V>R_s5luC5kzW()fCNsYe)=b&Y?#q6i+ z`+QsFb~lgwK}CCBDg|x?l)+J0x?1Ke84FS$H^D&r@LvbBFS(+6w0x8OHqk zq@-jz**`z@ni>6D;)2;4u~R1!cubJo4GtVE$==SsS|4-YKZyT6>J7{&(6bbDxzU?7 z=kcxYWqH{tXAhfphlDpD9B7sfi#o3f?)|dP0*NO`jzcyc#Ny}-R`fJAUCu3I`FaG3 zUmzF^wH}yMFzD(%oYz4+YrcG5K;Cw1Z~u@PHZ@RWB+%G_(C|JBO9sGl3H+=q1zj@^ zlhlzVf70b%BcQHZ#E8+ogX9%D1U;92Wk}zmTElf>dt!6iWw4u6Jue@1u2FGqWjIF# z#_NInx-^iF?*PlvXwhhH?)8-_^|PT7ZNmz~hx@VEgAd%DHoGe~tFA2=gw4CiXZ$GN zY%H;olX4ZrXyRnbHrA$mK(6H#=)Ql(@pVWnlvlI*wr;4msSU?>z4PJUXuVa8?m&ux zf)xLPJ{oVENr}=ClvmBp;-Het_8WnB@ceflq7U18dYHw$ z#Z!EQn%HX7?{ITtLvwSmHX#EtB{*_GpZDs%04Hcay^r@bYR{tGXBmi?7^YX}Bz1Ka zCcPG|u><@C;q>*cIiJ5P@Mg)Etpm8@0VexZx{m1H-Gj-_vtzO=Z{EVa#%NWbBZaR! zJG0Rps#p1Eb)U57L_Of$kASDA0k)TmCZV`LT1>HSe>~&)>h9`LKAvLbEugDz+@N>@ z*8>G*{n$8daxyJO;f#U26?eM{2fxHcHNnAk{|zkN0{3-oC}47A(u zi)3=uSyD>UJXM4MkU(jM?R2dEz(`{$pg!>{r$Vb!a*Q7baZTEU|@29SA484 zVZywalm~0gOP_|+b~)F?Ar{a6z@I9U+gg0hO@|md#W-Of%vGg3W`$mg$LmT?P6qNa z;>(xrya|s;M<}R4M>hyi#8E@x#IpBpw+IlPKqdeH{F;BL=H0h%_u#2x6hE-ew|93N zpvwfWST)$f=k9d;jIWnSQlhZfy^6OQm<2){nXLXBq=ShE>!UM^iytc!sNkb{IXt*X z#~-j05fc+f=WDiUDPZd;R*Fqbo+`h)MrUqrbz1Yx(?lFUv)9aQ@JEze^q_^B&)z{j zd=g+a+{P=spv8;gWvNtH817JuUGVsl0ubflq&95RaZf! z05|7BN8+c#PSD$0DcXR}zpn0@CdwNJDkNZ1!l3czT+hju6N%K6PA1_k=IdVg70;|% z-0A&e!EqOD^E(@6_WVE#%c^apWdhg&i10I%R@E2utgJc<3P#Sz5YM~Pz9aK#;ma|A zi=wTq?e0&mI0_yglkV{f`Fe9ux`xqC0NL{|3p_dByqP~3Ti>)w*F*+rX$yaC7`C z*7?c4@j?%33pOr$q10-$t1)_O;>Li>uM!VEh#QZ=z2|NZp@Z(-5d$@`?@uaNk+^^~xXx;w30)VIG z17Ppg5)X-MF$i#_^SU8S%ZQw>AwU@l#X0Xo?M8 zGy+ZG>ia2FiXTogPt*_90zlQER*b^x5ejFadjvPst_`!W($t}q<=WX;|G@dm&GN&;^TCLXDMUP<=Y zC_VQ6vx@_6tam?=bA{v4mZyCE`WQ4Xoj~Yjf>>WZG`>9A9(F=5plX4!=j8kxlE802 zUHhac``{W(jDQ$|DLs?+^-fkw?*sNw5ItbD!y;9bp!_TGL%2T!Mr!c`87TQ#y=3yZ-IR`>h<)%~ZA+*6lWjzJFL4ahS-? zuj8`3cw?7BYnyn$GfxgtVHm(iV9Gn@;&5LwSGB-o{Sm-QEttiXGuW9l=Dx?deo(Zc z0vepCT(6uocA|flyX)?H1IPsY^U&0(=WEyT^BDg}*@Sz;&LgY_4u%XjBL*2Y)pGR3 z1!>CZAHQ$(}m|407LIw$>?+!<`!D!NKa^)swq920CQ@*4@ z*<@C}+AS9N_FbXzs(KSs?oa~sfB*6aEj!29<$)ZGDE?sC^jbwEn>tH1oBU|J2zDFb zgH2zffkxaKFX}cbEqecA=Uvj<3%dQweL~zbY&?xZ4QM9 zOu5p~(WMZ+eDdOjBd8N#qY_Vp@l}Rk80Z2mLs+Ew+#rZn>Hq~in(fH8`dj`bgh~MG zI_2o68x29dGtE>FM(YoV)r4gq?4rU4O&8)QEyk*-hvbkcUI*r2RM35}F8sI1g@c`) zU1V=Mz-p=>>Fms(kexs^`$gu?K&jVb#_V4SV-4*N{cOZhgV_G^YU%9$+PRsa7snh< zP+{}Sy}<(2UOkN49W9L6!bZA@)gS%=(1C@LVf~lR%pmlcjfz3H3{QD>9EzXe$C{W< zOrgaVx{%M#4+_E?K~uqP^%oxl44+*lB*6dP^K}uA69asnW#?J-q{^vN|j3k=3k zKd{b8sHr=_Uc4E)rC9DalyHDA4r=I|ti|?XI*t^dV^RRY`qH^@l0BkRGJBr2518>* zfzz6+hewf7o9cX7)6`T7@D}|eRh6Hb@E*Jz^sA~K5g6jN8F)`H*Rnmbh%B`0y~ifp zQ))B#0rq$`t$V6^LeY%$(HBFU41vLO;xoG(nZJydRc~`}S#MI4k+pbi)<8NqK4Qbh z1_J?Lh(+kOwomCgzH9WPkl~8KOYRuU_PRZmn@oy^FvQM=EWid_F!aML zX!kXo-*7+d`a#LbRg#phJB5I+4NZ9$Y#Ths{XGb^TI=cBMc0iuQ>(S$_xQ|@9()k> zICL;gnIwwPE#|LK4|rmVEWNWQT;}aJEl*E+`}T(lMeHYxC!ykvBlRDWuHHtGNq)8+ ztT?Y%pHv&mpMrGn^NRm+){Can z6%YkMIgD|2+gNyNU|%n9)NP7RLLndr<%X+Wx3-`#2-~$G=m~hsIynkEU(5 z3m8+)l$H5wyuFW3j?^iR{Mv|3dy+H0m&XGB2IU9)_m?2!fs&gy?9;!~&6+xxptE0r zqxa#(#l=e!-sqSZjb)jksZ}Rw5QE}Eoe$KWb$8ibL%Y{dq`{D8#^%e7se_YB(Bpvu ztX_f!fHvUwKoS=UQ(bP+mfsw{NqYetg9?<~BfLI@Bz2dPAX=!Pr#edVwGf$wz`ocgU=_bTZ_Q#-C8`MY28dA?b zFOLdD#?Zg)W9s0Be+z`f+~Q)ECvyikNRF32d;pCXtB@gpl3-{LNBfOiw_ujH+2DS@ z0}N3q+S_vp37LY6rAhjk84zKB8}0G;W-`9-xJ6fH<7l(eG7^hTy&mLEPo zUj9u&J1d4&hyG%AanW>`8Hm82KdnCBxzBkWbSeoKIY4&-CJ(~^6{j1Oc6?|i(CTcB zQrQ-`Z0cWV{tkpj>lW4e^5E*e>;uwxi_z3^vqm$Slxi{EiG6EcN+F*MkqXnE(R00L zYrp!@>w{|cQ*F}WcR262+92UInSV=$mf872|5NjzGTh_oo$G?^_gwE?|BphrtQEa1 zFk=TI*cfda>v5;Ne_fUnzxS_RY|&E+*fgG>pJM9OHkq(O*KHDc1^HO+dBRbhohQ2V zd1VPMar!FxV;(mtDC)wdd|c`#)Ti55UG@&n^ABhMet`~y3+NsY70#9+y-Vf3>*yVa z_OaKaOJ1kc8B7CX0agwZAKT>I1G&<0dcL1#z(DxTZ(w~R*}p|1@{_L;m}ieEM0?6ik>TQ0nFOlYXHnROXW z7`1s{_s2y$0KW+!bh>`)R^y*Aaaf7vPv?c@EAi38pF(i*`e9)K?5OXw ztn_Ap@B9F`;yGsJ>9oObgD0BS%a$IWme6ldXe7G?YHr2l64fPt%m38;&YCnSGTD>w zKe71f<`31lmVeNTy8Pcr24*s&_W2D^-1pDP_S(o4&THS`GU3rN=YP$;`@b~s|J8M$tFFZh%lPi!{Qdvx zwg0mouK2Y+{r`2Ah2R}Tx12yb7l67uV_%-RKi#P`+daEzj&hLnum7hD!*{Pab%phR zxZdk1zIj=z_L~)!{4JHd_r#U(o-x-?jy)dB3vaul*P5m#$b@=e|pxgXKEc#AauO z9X>~@Jf9!C`S<-B$ZiwRwiDKKy)XVVH6|;k0rx&k?^M2XNAKIV1$uivuJVc9cvJ9C zz2Ul)Xe&r~)Gz&Ved-=@;PyGa0P(NaMgLnD{a@c*C(e-t+5%!>8~!>iAlCN((tq7| zQ?iSM_gynTeClib+s4U@U#|CkwdjBLXSYK@ zG`JApJ!f~;A0Y|a6Ebt<>0hrmy=8LDRRrz#eO|QaZl8qW{#j<6z=&S_@XfFFYJDrf zdtZQ?zLH~2U0;;j%m${NPT)?EIrC0;mW7v}o9dwwb=hcL+Lbt<*>4rU#9RLjpX_}# zUYg@S_uuKsm!~>_#2@PXVr|;h;9;aCV4>N!umAVdZRan3jnC9`{r~kwnA88S%U=co zH{|F2J=X`^^8rjS*WZY8tYZOs?!e29eLdEfqAzLp?v-Ak{Br*#^9=V&h8_r2SAUjlsfKL{t4VPbe;X&s%V7` zZop*P^m@kY+ylVPw6OHg{r6nY1z@}Kv2EO!5I1qHLTSAD=uJ@NbZexBnA z+)#8CL~Z^Z4-7+Xd39h0G+q0>=&N+E+wL-MmUAsPTwQ^Q0J4b+NIA}RKLgx01m^?S zxjYADVNgne36{!<29&MsMF@b>(+~bBs~Y?T9nq9dHj134{$Ku>X?A(@gIhBhfWXt$ K&t;ucLK6T~^VaMD diff --git a/website/static/css/custom.scss b/website/static/css/custom.scss index a645303e01b..b006d6aa7d0 100644 --- a/website/static/css/custom.scss +++ b/website/static/css/custom.scss @@ -239,7 +239,7 @@ h2 { @media (min-width: 1201px) { flex: 1 1 calc(33.333%); - max-width: calc(33.333%); + max-width: calc(50%); } } From 26e9f525761099b67c76e81942ff392580866720 Mon Sep 17 00:00:00 2001 From: Guillermo Alejandro Gallardo Diez Date: Wed, 14 Jan 2026 17:41:45 +0100 Subject: [PATCH 2/3] fix: update --accountId to --useAccount on CLI commands --- docs/integrations/tokens.md | 2 +- docs/primitives/dao.md | 6 +++--- docs/primitives/dex.md | 6 +++--- docs/primitives/ft/ft.md | 10 +++++----- docs/primitives/linkdrop/linkdrop.md | 12 ++++++------ docs/primitives/nft/nft.md | 10 +++++----- docs/smart-contracts/anatomy/serialization.md | 4 ++-- docs/smart-contracts/release/deploy.md | 4 ++-- docs/tutorials/auction/1.3-deploy.md | 6 +++--- docs/tutorials/auction/3.1-nft.md | 2 +- docs/tutorials/auction/3.2-ft.md | 4 ++-- docs/tutorials/auction/4-factory.md | 2 +- docs/tutorials/examples/advanced-xcc.md | 6 +++--- docs/tutorials/examples/near-drop.md | 6 +++--- docs/tutorials/examples/xcc.md | 4 ++-- 15 files changed, 42 insertions(+), 42 deletions(-) diff --git a/docs/integrations/tokens.md b/docs/integrations/tokens.md index a3a6df1253b..bb0ad9454db 100644 --- a/docs/integrations/tokens.md +++ b/docs/integrations/tokens.md @@ -767,7 +767,7 @@ You can get the same info later by the transaction hash from the previous call: - with JSON RPC call diff --git a/docs/primitives/dao.md b/docs/primitives/dao.md index cdb3a0abb84..c81555cd4c8 100644 --- a/docs/primitives/dao.md +++ b/docs/primitives/dao.md @@ -72,7 +72,7 @@ You can create a DAO by interacting with the `sputnik-dao` contract: export COUNCIL='["bob.near"]' export ARGS=`echo '{"config": {"name": "Primitives", "purpose": "Building primitives on NEAR", "metadata":""}, "policy": '$COUNCIL'}' | base64` - near call sputnikv2.testnet create "{\"name\": \"primitives\", \"args\": \"$ARGS\"}" --accountId bob.near --amount 6 --gas 150000000000000 + near call sputnikv2.testnet create "{\"name\": \"primitives\", \"args\": \"$ARGS\"}" --useAccount bob.near --amount 6 --gas 150000000000000 ``` :::note @@ -420,7 +420,7 @@ Create a proposal so other users can vote in favor or against it. ```bash - near call primitives.sputnik-dao.near add_proposal '{"proposal": {"description": "My first proposal", "kind": { "Transfer": {"token_id": "", "receiver_id": "bob.near", "amount": "10000000000000000000000000"}}}}' --deposit 0.1 --gas 300000000000000 --accountId bob.near + near call primitives.sputnik-dao.near add_proposal '{"proposal": {"description": "My first proposal", "kind": { "Transfer": {"token_id": "", "receiver_id": "bob.near", "amount": "10000000000000000000000000"}}}}' --deposit 0.1 --gas 300000000000000 --useAccount bob.near ``` }> @@ -740,7 +740,7 @@ These snippet will enable your users to cast a vote for proposal of a particular ```bash - near call primitives.sputnik-dao.near act_proposal '{"id": 0, "action": "VoteApprove"}' --gas 300000000000000 --accountId bob.near + near call primitives.sputnik-dao.near act_proposal '{"id": 0, "action": "VoteApprove"}' --gas 300000000000000 --useAccount bob.near ``` :::note Available vote options: `VoteApprove`, `VoteReject`, `VoteRemove`. diff --git a/docs/primitives/dex.md b/docs/primitives/dex.md index de847f94c52..f741cfb148b 100644 --- a/docs/primitives/dex.md +++ b/docs/primitives/dex.md @@ -125,7 +125,7 @@ In order to use the contract, make sure to register your account in the DEX by p ```bash -near call v2.ref-finance.near storage_deposit '' --accountId --amount 0.1 +near call v2.ref-finance.near storage_deposit '' --useAccount --amount 0.1 ``` @@ -146,7 +146,7 @@ In order to swap tokens, one must first deposit tokens into the DEX. For this, y ```bash -near call token.v2.ref-finance.near ft_transfer_call {"receiver_id": "v2.ref-finance.near", "amount": "1000000000000", "msg": ""} --gas 300000000000000 --depositYocto 1 --accountId +near call token.v2.ref-finance.near ft_transfer_call {"receiver_id": "v2.ref-finance.near", "amount": "1000000000000", "msg": ""} --gas 300000000000000 --depositYocto 1 --useAccount ``` @@ -513,7 +513,7 @@ In order to swap a token for another, you need to [have funds](#deposit-funds), ```bash near call v2.ref-finance.near swap "{\"actions\": [{\"pool_id\": 79, \"token_in\": \"token.v2.ref-finance.near\", \"amount_in\": \"100000000000000000\", \"token_out\": \"wrap.near\", \"min_amount_out\": \"1\"}]}" --gas 300000000000000 --depositYocto 1 - --accountId bob.near + --useAccount bob.near ```

diff --git a/docs/primitives/ft/ft.md b/docs/primitives/ft/ft.md index 2be3f912d97..373e8dac2b7 100644 --- a/docs/primitives/ft/ft.md +++ b/docs/primitives/ft/ft.md @@ -74,7 +74,7 @@ Here is how to directly interact with the factory contract through your applicat ```bash - near call token.primitives.near create_token '{"args":{"owner_id": "bob.near","total_supply": "1000000000","metadata":{"spec": "ft-1.0.0","name": "Test Token","symbol": "TTTEST","icon": "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7","decimals": 18}},"account_id": "bob.near"}' --gas 300000000000000 --depositYocto 2234830000000000000000000 --accountId bob.near + near call token.primitives.near create_token '{"args":{"owner_id": "bob.near","total_supply": "1000000000","metadata":{"spec": "ft-1.0.0","name": "Test Token","symbol": "TTTEST","icon": "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7","decimals": 18}},"account_id": "bob.near"}' --gas 300000000000000 --depositYocto 2234830000000000000000000 --useAccount bob.near ``` }> @@ -332,7 +332,7 @@ By calling this `storage_deposit` the user can register themselves or **register ```bash - near call token.v2.ref-finance.near storage_deposit '{"account_id": "alice.near"}' --depositYocto 1250000000000000000000 --accountId bob.near + near call token.v2.ref-finance.near storage_deposit '{"account_id": "alice.near"}' --depositYocto 1250000000000000000000 --useAccount bob.near ``` }> @@ -380,7 +380,7 @@ To send FT to another account you will use the `ft_transfer` method, indicating ```bash - near call token.v2.ref-finance.near ft_transfer '{"receiver_id": "alice.near", "amount": "100000000000000000"}' --depositYocto 1 --accountId bob.near + near call token.v2.ref-finance.near ft_transfer '{"receiver_id": "alice.near", "amount": "100000000000000000"}' --depositYocto 1 --useAccount bob.near ``` }> @@ -470,7 +470,7 @@ Let's assume that you need to deposit FTs on [Ref Finance](https://rhea.finance/ ```bash - near call token.v2.ref-finance.near ft_transfer_call '{"receiver_id": "v2.ref-finance.near", "amount": "100000000000000000", "msg": ""}' --gas 300000000000000 --depositYocto 1 --accountId bob.near + near call token.v2.ref-finance.near ft_transfer_call '{"receiver_id": "v2.ref-finance.near", "amount": "100000000000000000", "msg": ""}' --gas 300000000000000 --depositYocto 1 --useAccount bob.near ```
@@ -570,7 +570,7 @@ While the FT standard does not define a `burn` method, you can simply transfer t ```bash - near call token.v2.ref-finance.near ft_transfer '{"receiver_id": "0000000000000000000000000000000000000000000000000000000000000000", "amount": "100000000000000000"}' --depositYocto 1 --accountId bob.near + near call token.v2.ref-finance.near ft_transfer '{"receiver_id": "0000000000000000000000000000000000000000000000000000000000000000", "amount": "100000000000000000"}' --depositYocto 1 --useAccount bob.near ``` diff --git a/docs/primitives/linkdrop/linkdrop.md b/docs/primitives/linkdrop/linkdrop.md index 280534eff32..6f3b10ef505 100644 --- a/docs/primitives/linkdrop/linkdrop.md +++ b/docs/primitives/linkdrop/linkdrop.md @@ -93,7 +93,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000"}' --depositYocto 23000000000000000000000 --gas 100000000000000 --accountId bob.near +near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000"}' --depositYocto 23000000000000000000000 --gas 100000000000000 --useAccount bob.near ``` @@ -161,7 +161,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "nft": {"sender_id": "bob.near", "contract_id": "nft.primitives.near"}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --accountId bob.near +near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "nft": {"sender_id": "bob.near", "contract_id": "nft.primitives.near"}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --useAccount bob.near ``` @@ -206,7 +206,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call nft.primitives.near nft_transfer_call '{"receiver_id": "v2.keypom.near", "token_id": , "msg": }' --depositYocto 1 --gas 100000000000000 --accountId bob.near +near call nft.primitives.near nft_transfer_call '{"receiver_id": "v2.keypom.near", "token_id": , "msg": }' --depositYocto 1 --gas 100000000000000 --useAccount bob.near ``` @@ -276,7 +276,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "ftData": {"contractId": "ft.primitives.near","senderId": "bob.near", "amount": "1"}}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --accountId bob.near +near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "ftData": {"contractId": "ft.primitives.near","senderId": "bob.near", "amount": "1"}}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --useAccount bob.near ``` @@ -323,7 +323,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call ft.primitives.near ft_transfer '{"receiver_id": "v2.keypom.near", "amount": "1"}' --depositYocto 1 --gas 100000000000000 --accountId bob.near +near call ft.primitives.near ft_transfer '{"receiver_id": "v2.keypom.near", "amount": "1"}' --depositYocto 1 --gas 100000000000000 --useAccount bob.near ``` @@ -402,7 +402,7 @@ Learn more about adding the [Wallet Selector Hooks](../../web3-apps/tutorials/we ```bash -near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "fcData": {"methods": [[{"receiverId": "nft.primitives.near","methodName": "nft_mint","args": {"token_id": "1", "metadata": {"title": "My NFT drop","description": "","media": ""}, "accountIdField": "receiver_id", "attachedDeposit": "10000000000000000000000"}]]}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --accountId bob.near +near call v2.keypom.near create_drop '{"public_keys": , "deposit_per_use": "10000000000000000000000", "fcData": {"methods": [[{"receiverId": "nft.primitives.near","methodName": "nft_mint","args": {"token_id": "1", "metadata": {"title": "My NFT drop","description": "","media": ""}, "accountIdField": "receiver_id", "attachedDeposit": "10000000000000000000000"}]]}}' --depositYocto 23000000000000000000000 --gas 100000000000000 --useAccount bob.near ``` diff --git a/docs/primitives/nft/nft.md b/docs/primitives/nft/nft.md index beba025b160..0198acf699f 100644 --- a/docs/primitives/nft/nft.md +++ b/docs/primitives/nft/nft.md @@ -122,7 +122,7 @@ Here is how to directly interact with the factory contract through your applicat ```bash - near call nft.primitives.near nft_mint '{"token_id": "1", "receiver_id": "bob.near", "token_metadata": {"title": "NFT Primitive Token", "description": "Awesome NFT Primitive Token", "media": "string"}}' --depositYocto 10000000000000000000000, --accountId bob.near + near call nft.primitives.near nft_mint '{"token_id": "1", "receiver_id": "bob.near", "token_metadata": {"title": "NFT Primitive Token", "description": "Awesome NFT Primitive Token", "media": "string"}}' --depositYocto 10000000000000000000000, --useAccount bob.near ``` }> @@ -394,7 +394,7 @@ In both cases, it is necessary to invoke the `nft_transfer` method, indicating t ```bash - near call nft.primitives.near nft_transfer '{"token_id": "1", "receiver_id": "bob.near"}' --accountId bob.near --deposit 0.000000000000000000000001 + near call nft.primitives.near nft_transfer '{"token_id": "1", "receiver_id": "bob.near"}' --useAccount bob.near --deposit 0.000000000000000000000001 ``` }> @@ -449,7 +449,7 @@ Natively, only NEAR tokens (Ⓝ) can be attached to a function calls. However, t ```bash -near call nft_transfer_call '{"receiver_id": "", "token_id": "", "msg": ""}' --accountId --depositYocto 1 +near call nft_transfer_call '{"receiver_id": "", "token_id": "", "msg": ""}' --useAccount --depositYocto 1 ``` @@ -498,7 +498,7 @@ You can authorize other users to transfer an NFT you own. This is useful, for ex "token_id": "", "account_id": "", "msg": "" - }' --accountId --depositYocto 1 + }' --useAccount --depositYocto 1 ``` }> @@ -544,7 +544,7 @@ While the NFT standard does not define a `burn` method, you can simply transfer ```bash - near call nft.primitives.near nft_transfer '{"token_id": "1", "receiver_id": "0000000000000000000000000000000000000000000000000000000000000000"}' --accountId bob.near --deposit 0.000000000000000000000001 + near call nft.primitives.near nft_transfer '{"token_id": "1", "receiver_id": "0000000000000000000000000000000000000000000000000000000000000000"}' --useAccount bob.near --deposit 0.000000000000000000000001 ``` diff --git a/docs/smart-contracts/anatomy/serialization.md b/docs/smart-contracts/anatomy/serialization.md index aeaf4c27dd2..e2303e3fbd7 100644 --- a/docs/smart-contracts/anatomy/serialization.md +++ b/docs/smart-contracts/anatomy/serialization.md @@ -175,7 +175,7 @@ If we initialize the state we can see how Borsh is used to serialize the state ```bash # initialize with the string "hi" and 0 -near call $CONTRACT init '{"string":"hi", "first_u8":0}' --accountId $CONTRACT +near call $CONTRACT init '{"string":"hi", "first_u8":0}' --useAccount $CONTRACT # check the state near view-state $CONTRACT --utf8 --finality optimistic @@ -221,7 +221,7 @@ value: '\x00' If we modify the stored string and add a new number, the state changes accordingly: ```bash -near call $CONTRACT change_state '{"string":"bye", "number":1}' --accountId $CONTRACT +near call $CONTRACT change_state '{"string":"bye", "number":1}' --useAccount $CONTRACT ```
diff --git a/docs/smart-contracts/release/deploy.md b/docs/smart-contracts/release/deploy.md index 501ac9c7cee..6ef5a2b4667 100644 --- a/docs/smart-contracts/release/deploy.md +++ b/docs/smart-contracts/release/deploy.md @@ -91,7 +91,7 @@ initialize the state. This is not necessary if your contract implements `default ```bash # Call the initialization method (`init` in our examples) -near call [] --accountId +near call [] --useAccount ``` :::info @@ -125,5 +125,5 @@ Change methods are those that perform both read and write operations. For these since that account will expend GAS in the call. ```bash -near call --accountId [--deposit ] [--gas ] +near call --useAccount [--deposit ] [--gas ] ``` diff --git a/docs/tutorials/auction/1.3-deploy.md b/docs/tutorials/auction/1.3-deploy.md index 5c2c29b5e9c..8a0bd575fe3 100644 --- a/docs/tutorials/auction/1.3-deploy.md +++ b/docs/tutorials/auction/1.3-deploy.md @@ -60,7 +60,7 @@ To deploy the contract, you need to compile the contract code into WebAssembly ( # initialize the contract, it finishes in 2 minutes TWO_MINUTES_FROM_NOW=$(date -v+2M +%s000000000) - near call init '{"end_time": "'$TWO_MINUTES_FROM_NOW'", "auctioneer": ""}' --accountId + near call init '{"end_time": "'$TWO_MINUTES_FROM_NOW'", "auctioneer": ""}' --useAccount ``` @@ -76,7 +76,7 @@ To deploy the contract, you need to compile the contract code into WebAssembly ( # initialize the contract, it finishes in 2 minutes TWO_MINUTES_FROM_NOW=$(date -v+2M +%s000000000) - near call init '{"end_time": "'$TWO_MINUTES_FROM_NOW'", "auctioneer": ""}' --accountId + near call init '{"end_time": "'$TWO_MINUTES_FROM_NOW'", "auctioneer": ""}' --useAccount ``` @@ -115,7 +115,7 @@ We are now ready to start bidding by calling the `bid` function on the contract. ```bash # call the contract to bid -near call bid --accountId --deposit 1 +near call bid --useAccount --deposit 1 # get the highest bid near view get_highest_bid diff --git a/docs/tutorials/auction/3.1-nft.md b/docs/tutorials/auction/3.1-nft.md index ff146cd106c..d492dc231a5 100644 --- a/docs/tutorials/auction/3.1-nft.md +++ b/docs/tutorials/auction/3.1-nft.md @@ -204,7 +204,7 @@ After `claim` is called, the test should verify that the auction winner now owns If you would like to interact with the new contract via the CLI you can mint an NFT from a pre-deployed NFT contract ```bash -near call nft.examples.testnet nft_mint '{"token_id": "TYPE_A_UNIQUE_VALUE_HERE", "receiver_id": "", "metadata": { "title": "GO TEAM", "description": "The Team Goes", "media": "https://bafybeidl4hjbpdr6u6xvlrizwxbrfcyqurzvcnn5xoilmcqbxfbdwrmp5m.ipfs.dweb.link/", "copies": 1}}' --accountId --deposit 0.1 +near call nft.examples.testnet nft_mint '{"token_id": "TYPE_A_UNIQUE_VALUE_HERE", "receiver_id": "", "metadata": { "title": "GO TEAM", "description": "The Team Goes", "media": "https://bafybeidl4hjbpdr6u6xvlrizwxbrfcyqurzvcnn5xoilmcqbxfbdwrmp5m.ipfs.dweb.link/", "copies": 1}}' --useAccount --deposit 0.1 ``` --- diff --git a/docs/tutorials/auction/3.2-ft.md b/docs/tutorials/auction/3.2-ft.md index bc482c9b5e0..2c60735efe5 100644 --- a/docs/tutorials/auction/3.2-ft.md +++ b/docs/tutorials/auction/3.2-ft.md @@ -379,13 +379,13 @@ When deploying the contract make sure to specify the FT contract `dai.fakes.test The auction contract will need to be registered as well, you could do this by sending it an arbitrary amount of $DAI from the faucet or you can just register it since it doesn't need any FTs. You should also register the auctioneer, ```bash -near call dai.fakes.testnet storage_deposit '{"account_id": ""}' --accountId --deposit 0.1 +near call dai.fakes.testnet storage_deposit '{"account_id": ""}' --useAccount --deposit 0.1 ``` Now you can go ahead and place a bid. DAI has 18 decimals meaning that 1 $DAI is made up of 10^24 smallest units. To make a bid of 2 $DAI you can use the command: ```bash -near call dai.fakes.testnet ft_transfer_call '{"receiver_id": "", "amount": "2000000000000000000", "msg": ""}' --accountId --depositYocto 1 +near call dai.fakes.testnet ft_transfer_call '{"receiver_id": "", "amount": "2000000000000000000", "msg": ""}' --useAccount --depositYocto 1 ``` ## Auction architecture diff --git a/docs/tutorials/auction/4-factory.md b/docs/tutorials/auction/4-factory.md index 1a486788dee..4da58d4cf76 100644 --- a/docs/tutorials/auction/4-factory.md +++ b/docs/tutorials/auction/4-factory.md @@ -71,7 +71,7 @@ near deploy ./target/near/contract.wasm You can now use the factory to deploy new auction contracts, here is an example command. ```bash -near call auction-factory.testnet deploy_new_auction '{"name": "new-auction", "end_time": "3000000000000000000", "auctioneer": "pivortex.testnet", "ft_contract": "dai.fakes.testnet", "nft_contract": "nft.examples.testnet", "token_id": "7777", "starting_price": "1000000000000000000"}' --accountId pivortex.testnet --deposit 1.6 --gas 100000000000000 +near call auction-factory.testnet deploy_new_auction '{"name": "new-auction", "end_time": "3000000000000000000", "auctioneer": "pivortex.testnet", "ft_contract": "dai.fakes.testnet", "nft_contract": "nft.examples.testnet", "token_id": "7777", "starting_price": "1000000000000000000"}' --useAccount pivortex.testnet --deposit 1.6 --gas 100000000000000 ``` :::info Deposit and storage costs diff --git a/docs/tutorials/examples/advanced-xcc.md b/docs/tutorials/examples/advanced-xcc.md index 570ed997dcc..f06b3ddee73 100644 --- a/docs/tutorials/examples/advanced-xcc.md +++ b/docs/tutorials/examples/advanced-xcc.md @@ -319,15 +319,15 @@ To interact with the contract through the console, you can use the following com ```bash # Execute contracts sequentially # Replace with your account ID - near call batch_actions --accountId --gas 300000000000000 + near call batch_actions --useAccount --gas 300000000000000 # Execute contracts in parallel # Replace with your account ID - near call multiple_contracts --accountId --gas 300000000000000 + near call multiple_contracts --useAccount --gas 300000000000000 # Execute multiple instances of the same contract in parallel # Replace with your account ID - near call similar_contracts --accountId --gas 300000000000000 + near call similar_contracts --useAccount --gas 300000000000000 ``` diff --git a/docs/tutorials/examples/near-drop.md b/docs/tutorials/examples/near-drop.md index 1d36a6e7efa..f85a65cdbeb 100644 --- a/docs/tutorials/examples/near-drop.md +++ b/docs/tutorials/examples/near-drop.md @@ -256,13 +256,13 @@ To interact with the contract through the console, you can use the following com ```bash # create a NEAR drop - near call create_near_drop '{"public_keys": ["ed25519:AvBVZDQrg8pCpEDFUpgeLYLRGUW8s5h57NGhb1Tc4H5q", "ed25519:4FMNvbvU4epP3HL9mRRefsJ2tMECvNLfAYDa9h8eUEa4"], "amount_per_drop": "10000000000000000000000"}' --accountId --deposit 1 --gas 100000000000000 + near call create_near_drop '{"public_keys": ["ed25519:AvBVZDQrg8pCpEDFUpgeLYLRGUW8s5h57NGhb1Tc4H5q", "ed25519:4FMNvbvU4epP3HL9mRRefsJ2tMECvNLfAYDa9h8eUEa4"], "amount_per_drop": "10000000000000000000000"}' --useAccount --deposit 1 --gas 100000000000000 # create a FT drop - near call create_ft_drop '{"public_keys": ["ed25519:HcwvxZXSCX341Pe4vo9FLTzoRab9N8MWGZ2isxZjk1b8", "ed25519:5oN7Yk7FKQMKpuP4aroWgNoFfVDLnY3zmRnqYk9fuEvR"], "amount_per_drop": "1", "ft_contract": ""}' --accountId --gas 100000000000000 + near call create_ft_drop '{"public_keys": ["ed25519:HcwvxZXSCX341Pe4vo9FLTzoRab9N8MWGZ2isxZjk1b8", "ed25519:5oN7Yk7FKQMKpuP4aroWgNoFfVDLnY3zmRnqYk9fuEvR"], "amount_per_drop": "1", "ft_contract": ""}' --useAccount --gas 100000000000000 # create a NFT drop - near call create_nft_drop '{"public_key": "ed25519:HcwvxZXSCX341Pe4vo9FLTzoRab9N8MWGZ2isxZjk1b8", "nft_contract": ""}' --accountId --gas 100000000000000 + near call create_nft_drop '{"public_key": "ed25519:HcwvxZXSCX341Pe4vo9FLTzoRab9N8MWGZ2isxZjk1b8", "nft_contract": ""}' --useAccount --gas 100000000000000 # claim to an existing account # see the full version diff --git a/docs/tutorials/examples/xcc.md b/docs/tutorials/examples/xcc.md index 152ce26f671..c82f2dd7c11 100644 --- a/docs/tutorials/examples/xcc.md +++ b/docs/tutorials/examples/xcc.md @@ -236,11 +236,11 @@ To interact with the contract through the console, you can use the following com ```bash # Get message from the hello-near contract # Replace with your account ID - near call query_greeting --accountId + near call query_greeting --useAccount # Set a new message for the hello-near contract # Replace with your account ID - near call change_greeting '{"new_greeting":"XCC Hi"}' --accountId + near call change_greeting '{"new_greeting":"XCC Hi"}' --useAccount ``` From 279aea619430dd08248a78efd9159ac34c1f6c18 Mon Sep 17 00:00:00 2001 From: Guillermo Alejandro Gallardo Diez Date: Wed, 14 Jan 2026 18:35:31 +0100 Subject: [PATCH 3/3] chore: add forgotten blogpost --- blog/2025-06-21.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/2025-06-21.md b/blog/2025-06-21.md index 5b3e54b2b11..8c1a1bbfbb5 100644 --- a/blog/2025-06-21.md +++ b/blog/2025-06-21.md @@ -409,7 +409,7 @@ These are "call" methods (marked `&mut self` in Rust) because they modify the co * **Tools:** * **[NEAR CLI](/tools/near-cli):** A command-line interface for interacting with NEAR. Example: ```bash - near call twitter-app.your-account.near post_tweet '{"text": "Hello from CLI!"}' --accountId user1.near + near call twitter-app.your-account.near post_tweet '{"text": "Hello from CLI!"}' --useAccount user1.near ``` * **NEAR SDKs (JavaScript, etc.):** For web or mobile frontends, you'd use a JavaScript library (like [`near-api-js`](/tools/near-api)) to construct and send these transactions through a user's NEAR Wallet (which handles the signing).